I've done most of it with this

select f.* from firms f
inner join
(select * from calls where by_or_on <> '') c
on f.id = c.firm_id

Phew!

On 3 February 2013 09:40, e-mail mgbg25171 <mgbg25...@blueyonder.co.uk>wrote:

> Keith, Petite
> I'm really grateful for your assistance. I've tried your solutions and
> they don't quite give me what I want so...
> sorry for misleading you. Secondly your suggestion that I explain in words
> is a good one.
> Here goes...
>
> I've got a table of FIRMS and a table of CALLS made to those firms.
> In the table of calls to the firms, two of the fields are
> unsurprisingly...FIRM_ID and
> a a field called BY_OR_ON that records the date by which something must be
> done.
> BY_OR_ON is mostly null.
> I want to FILTER the FIRMS records to EXCLUDE any which do not have a
> single calls record with a non-null by field
> I'm only interest in the LATEST/MAX BY_OR_ON date for each firm which will
> exclude many of the calls records.
> I then want to SORT the FIRMS records to order them by earlest...latest
> BY_OR_ON date for each firm, first...
> if earlies...latest BY_OR_ON makes sense.
>
> I hope this helps to explain
> Best Regards
>
>
>
>
>
> On 3 February 2013 03:39, Keith Medcalf <kmedc...@dessus.com> wrote:
>
>> > Mayhaps you mean:
>> >
>> >  Select f.*
>> >    from firms f
>> >     left join (select firm_id, max(by_or_on) as boo
>> >                  from calls
>> >              group by firm_id
>> >                having by_or_on is not null
>> >              order by by_or_on desc) c
>> >       on c.firm_id = f.id
>> > order by boo desc;
>>
>> Should be:
>>
>>  Select f.*
>>    from firms f
>>     left join (select firm_id, max(by_or_on) as boo
>>                  from calls
>>              group by firm_id
>>                having max(by_or_on) is not null
>>              order by max(by_or_on) desc) c
>>       on c.firm_id = f.id
>> order by boo desc;
>>
>> or the equivalent:
>>
>>  Select f.*
>>    from firms f
>>     left join (select firm_id, max(by_or_on) as boo
>>                  from calls
>>              group by firm_id
>>                having boo is not null
>>              order by boo desc) c
>>       on c.firm_id = f.id
>> order by boo desc;
>>
>> ---
>> ()  ascii ribbon campaign against html e-mail
>> /\  www.asciiribbon.org
>>
>>
>> > -----Original Message-----
>> > From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users-
>> > boun...@sqlite.org] On Behalf Of Keith Medcalf
>> > Sent: Saturday, 02 February, 2013 17:11
>> > To: General Discussion of SQLite Database
>> > Subject: Re: [sqlite] trying to exclude records which have a field that
>> is
>> > null
>> >
>> >
>> > I'm surprised you are getting anything at all since the statement is
>> > semantically invalid.
>> >
>> >  Select f.*
>> >    from firms f
>> >     left join (select firm_id, max(by_or_on) as boo
>> >                  from calls
>> >              group by firm_id
>> >                having by_or_on is not null
>> >              order by by_or_on desc)
>> >       on c.firm_id = f.id
>> > order by boo desc;
>> >
>> > Perhaps you can describe the result you are attempting to obtain.
>> >
>> > **the having clause filters the "return rows" of a "group by"
>> (aggregate)
>> > select.  Therefore the references in the HAVING can only test against
>> > "returned columns", not against the "source columns" from which the
>> result
>> > is derived.  Once uses the WHERE clause to apply conditions to the input
>> > of the aggregate, and HAVING to apply conditions to the output.
>> >
>> > **the same applies to the "order by" of a "group by" (aggregate) select.
>> > You can only order by the "returned result columns", not by the "source
>> > data columns".
>> >
>> > Mayhaps you mean:
>> >
>> >  Select f.*
>> >    from firms f
>> >     left join (select firm_id, max(by_or_on) as boo
>> >                  from calls
>> >              group by firm_id
>> >                having by_or_on is not null
>> >              order by by_or_on desc) c
>> >       on c.firm_id = f.id
>> > order by boo desc;
>> >
>> > of course, the order by inside the table subquery is useless, so this
>> > would become:
>> >
>> >  Select f.*
>> >    from firms f
>> >     left join (select firm_id, max(by_or_on) as boo
>> >                  from calls
>> >              group by firm_id
>> >                having boo is not null) c
>> >       on c.firm_id = f.id
>> > order by boo desc;
>> >
>> > but perhaps you really mean:
>> >
>> >  Select f.*
>> >    from firms f
>> >     left join (select firm_id, max(by_or_on) as boo
>> >                  from calls
>> >                 where by_or_on is not null
>> >              group by firm_id) c
>> >       on c.firm_id = f.id
>> > order by boo desc;
>> >
>> > which is a somewhat different thing.
>> >
>> > ---
>> > ()  ascii ribbon campaign against html e-mail
>> > /\  www.asciiribbon.org
>> >
>> >
>> > > -----Original Message-----
>> > > From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users-
>> > > boun...@sqlite.org] On Behalf Of e-mail mgbg25171
>> > > Sent: Saturday, 02 February, 2013 16:19
>> > > To: General Discussion of SQLite Database
>> > > Subject: [sqlite] trying to exclude records which have a field that is
>> > > null
>> > >
>> > >     wSQL = _
>> > >     "Select f.* " & _
>> > >     "from firms f " & _
>> > >     "left join " & _
>> > >     "(" & _
>> > >         "select firm_id, max(by_or_on) as boo " & _
>> > >         "from calls " & _
>> > >         "group by firm_id " & _
>> > > "having by_or_on is not null " & _    <==========THIS ISN'T DOING IT
>> FOR
>> > > ME
>> > > AND I'D LIKE TO KNOW WHY
>> > >         "order by by_or_on desc" & _
>> > >     ") c " & _
>> > >     "on c.firm_id = f.id " & _
>> > >     "order by boo desc;"
>> > >
>> > > Any help much appreciated
>> > > _______________________________________________
>> > > sqlite-users mailing list
>> > > sqlite-users@sqlite.org
>> > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >
>> >
>> >
>> > _______________________________________________
>> > sqlite-users mailing list
>> > sqlite-users@sqlite.org
>> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to