Received: from localhost (maia-3.hub.org [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id B4C629FB6CE for ; Tue, 19 Jun 2007 18:08:20 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 68749-06 for ; Tue, 19 Jun 2007 18:08:12 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.5 Received: from mtao03.charter.net (mtao03.charter.net [209.225.8.188]) by postgresql.org (Postfix) with ESMTP id 941FC9FB5C9 for ; Tue, 19 Jun 2007 18:08:16 -0300 (ADT) Received: from aa02.charter.net ([10.20.200.154]) by mtao03.charter.net (InterMail vM.7.08.02.00 201-2186-121-20061213) with ESMTP id <20070619210814.KXOT1525.mtao03.charter.net@aa02.charter.net>; Tue, 19 Jun 2007 17:08:14 -0400 Received: from [10.0.1.2] (really [66.188.164.45]) by aa02.charter.net with ESMTP id <20070619210802.EASK8225.aa02.charter.net@[10.0.1.2]>; Tue, 19 Jun 2007 17:08:02 -0400 In-Reply-To: <46782BC8.1050005@lake-lotawana.mo.us> References: <466FEEC9.4050300@lake-lotawana.mo.us> <46782BC8.1050005@lake-lotawana.mo.us> Mime-Version: 1.0 (Apple Message framework v752.2) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <50AD6CA6-3D28-457E-BCF9-568E0B4DD410@seespotcode.net> Cc: postgresql sql list Content-Transfer-Encoding: 7bit From: Michael Glaesemann Subject: Re: join problem Date: Tue, 19 Jun 2007 16:07:58 -0500 To: A. R. Van Hook X-Mailer: Apple Mail (2.752.2) X-Chzlrs: 0 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200706/147 X-Sequence-Number: 28637 [Please don't top post as it makes the discussion more difficult to follow, and please reply to the list so that others may benefit from and participate in the discussion.] On Jun 19, 2007, at 14:17 , A. R. Van Hook wrote: > Michael Glaesemann wrote: >> >> On Jun 13, 2007, at 8:19 , A. R. Van Hook wrote: >> >>> I have join problem: >>> "select i.ivid, v.eventdate, v.deposit, v.invdate, cai.db, >>> sum(i.tax) as tax, >>> sum(i.tax + i.rowtot) as totalP, >>> (sum(i.tax + i.rowtot) - v.deposit) as balance >>> from invoice v >>> left outer join >>> invoiceitems i >>> on v.ivid = i.ivid >>> where v.cusid = $cusid >>> and v.cusid = cai.cusid >>> group by i.ivid, v.eventdate, v.deposit, v.invdate, cai.db >>> ERROR: missing FROM-clause entry for table "cai" >>> >>> If I add cai to the from clause "from invoice v, cai, I get >>> ERROR: missing FROM-clause entry for table "cai" >>> ERROR: invalid reference to FROM-clause entry for table "v" >> >> I think you may need to change the order of the JOIN clause. Does >> this work? >> >> SELECT i.ivid >> , v.eventdate >> , v.deposit >> , v.invdate >> , cai.db >> , sum(i.tax) as tax >> , sum(i.tax + i.rowtot) as totalP >> , (sum(i.tax + i.rowtot) - v.deposit) as balance >> FROM cai >> JOIN invoice v ON (cai.cusid = v.cusid) >> LEFT JOIN invoiceitems i ON (v.ivid = i.ivid) >> WHERE v.cusid = $cusid >> GROUP BY i.ivid >> , v.eventdate >> , v.deposit >> , v.invdate >> , cai.db >> >> Note I've also moved the cai.cusid = v.cusid into the JOIN >> condition (which is what it is). Also, if cai doesn't have a ivid >> column and invoiceitems doesn't have a cusid column, you can use >> USING (cusid) and USING (ivid) rather than ON (cai.cusid = >> v.cusid) and ON (v.ivid = i.ivid), which has the nice property of >> outputing only one join column rather than one column for each >> table, (i.e., only one cusid column rather than one each for cai >> and invoice). >> >> Michael Glaesemann >> grzm seespotcode net > This solution works fine but the summations are reporting > individual row data. > i.e. > ivid | eventdate | deposit | invdate | db | tax | totalp > | balance > ------+------------+---------+------------+------+--------+--------- > +--------- > 7610 | 10/15/2005 | 0.00 | 05/05/2005 | 0.00 | 11.490 | 170.490 > | 170.490 > 7868 | 10/15/2005 | 85.25 | 06/04/2005 | 0.00 | | > | 8620 | 10/15/2005 | 85.24 | 09/07/2005 | 0.00 | 0.000 > | 0.000 | -85.240 > > can the query be modified to get the overall totals of each > (db,tax,totalp,balance)? If you want totals for db, tax, totalp, and balance, you'll need to modify the rows that are returned (the SELECT list) and the GROUP BY clause to group those together. I don't know what you want to the totals over: eventdate? ivid? Give it a try and if you still have questions, be sure to post what you've attempted. Michael Glaesemann grzm seespotcode net