> 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: [email protected] [mailto:sqlite-users-
> [email protected]] 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: [email protected] [mailto:sqlite-users-
> > [email protected]] 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
> > [email protected]
> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users