[GENERAL] Re: Joining more than 2 tables

2001-05-04 Thread Nils Zonneveld



Jeff Meeks wrote:
 
 Hi,
 I am trying to join 3 tables
 with this query
 select a.id, a.name, sum(b.qty), sum(c.qty)
 from a, b, c
 where a.id=xxx and b.id=a.id and c.id=a.id
 
 what the sums that get returned look as if they are a cross products of
 the b and c tables.
 
 What is the correct way to join these tables?
 Pointers to docs is welcome
 
 Thanks
 Jeff Meeks
 [EMAIL PROTECTED]
 

I tried it with the folowing data:

speeltuin=# select * from a;
 id | name
+--
  1 | Joe
  2 | Pete
  3 | John
(3 rows)

speeltuin=# select * from b;
 id | qty
+-
  1 |   1
  1 |   2
  2 |   2
  2 |   3
(4 rows)

speeltuin=# select * from c;
 id | qty
+-
  2 |   4
  2 |   5
  3 |   7
(3 rows)



This statement gave the correct result for me:


select a.id, a.name,
(select sum(b.qty) from b where b.id = a.id) as b_qty,
(select sum(c.qty) from c where c.id = a.id) as c_qty
from a;


 id | name | b_qty | c_qty
+--+---+---
  1 | Joe  | 3 |
  2 | Pete | 5 | 9
  3 | John |   | 7
(3 rows)

Maybe someone else has a more efficient one, but this one is correct.

Hope this helps,

Nils

---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://www.postgresql.org/search.mpl



[GENERAL] RE: Joining more than 2 tables

2001-05-02 Thread Joel Burton

On Wed, 2 May 2001, Jeff Meeks wrote:

   What I am looking for is a query that will return a list of id's with a
 sum from table b and a sum from table c like this:
 
   id  namesum(b)  sum(a)
   1   shell34  50
   2   jeff 40  20
 
 Thanks
 Jeff Meeks
 [EMAIL PROTECTED]

SELECT id, name,
   (SELECT sum(b) FROM b WHERE b.id=a.id) AS sum_b,
   (SELECT sum(c) FROM c WHERE c.id=a.id) AS sum_c
FROM   a;

-- 
Joel Burton   [EMAIL PROTECTED]
Director of Information Systems, Support Center of Washington


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html