I need to test this but this is looking promising select f.* from firms f inner join (select firm_id, max(by_or_on) from calls where by_or_on <> '' group by firm_id order by by_or_on) c on f.id = c.firm_id
What do you think On 3 February 2013 09:55, e-mail mgbg25171 <mgbg25...@blueyonder.co.uk>wrote: > 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