Re: joins INNER, OUTER, LEFT, RIGHT, FULL, ...
От | Christian Fowler |
---|---|
Тема | Re: joins INNER, OUTER, LEFT, RIGHT, FULL, ... |
Дата | |
Msg-id | Pine.LNX.4.61.0411240130250.20105@leda.steelsun.com обсуждение исходный текст |
Ответ на | Re: joins INNER, OUTER, LEFT, RIGHT, FULL, ... ("Roderick A. Anderson" <raa@mailporter.net>) |
Список | pgsql-admin |
On Tue, 23 Nov 2004, Roderick A. Anderson wrote: > Jaime Casanova wrote: > >> http://www.postgresql.org/docs/7.4/static/queries-table-expressions.html#QUERIES-JOIN >> > Been there, done that. Bought several tee-shirts. > >> What do you mean with *complex joins*? >> > > SELECT first, last, username || '@' || dom.domain as emailaddress > FROM cust_main cm > LEFT OUTER JOIN cust_pkg cp ON ( cm.custnum = cp.custnum ) > LEFT OUTER JOIN cust_svc cs ON ( cp.pkgnum = cs.pkgnum ) > LEFT OUTER JOIN svc_email em ON ( cs.svcnum = em.svcnum ) > LEFT OUTER JOIN svc_domain dom ON ( em.domain = dom.svcnum ) > WHERE zip = '99999' > AND username || '@' || dom.domain != '@' > > Which worked until I added one more table with a one-to-one relation to > cust_main.custnum. Then I got several tuples (2+) for each row above. try: SELECT first, last, username || '@' || dom.domain as emailaddress FROM cust_main cm INNER JOIN one_more om ON ( om.custnum = cm.custnum ) LEFT OUTER JOIN cust_pkg cp ON ( cm.custnum = cp.custnum ) LEFT OUTER JOIN cust_svc cs ON ( cp.pkgnum = cs.pkgnum ) LEFT OUTER JOIN svc_email em ON ( cs.svcnum = em.svcnum ) LEFT OUTER JOIN svc_domain dom ON ( em.domain = dom.svcnum ) WHERE zip = '99999' AND username || '@' || dom.domain != '@' or SELECT first, last, username || '@' || dom.domain as emailaddress FROM one_more om, cust_main cm LEFT OUTER JOIN cust_pkg cp ON ( cm.custnum = cp.custnum ) LEFT OUTER JOIN cust_svc cs ON ( cp.pkgnum = cs.pkgnum ) LEFT OUTER JOIN svc_email em ON ( cs.svcnum = em.svcnum ) LEFT OUTER JOIN svc_domain dom ON ( em.domain = dom.svcnum ) WHERE zip = '99999' AND om.custnum=cm.custnum AND username || '@' || dom.domain != '@' The explicit join syntax was freaky for me too at first, but after several years, I prefer it now, since you can easily control your left outer joins [ \ / [ >X< Christian Fowler | spider AT viovio.com [ / \ http://www.viovio.com | http://www.tikipro.org
В списке pgsql-admin по дате отправления: