Re: reforming query for 7.0.2
От | Josh Berkus |
---|---|
Тема | Re: reforming query for 7.0.2 |
Дата | |
Msg-id | web-621107@davinci.ethosmedia.com обсуждение исходный текст |
Ответ на | reforming query for 7.0.2 (Markus Bertheau <twanger@bluetwanger.de>) |
Ответы |
Re: reforming query for 7.0.2
|
Список | pgsql-sql |
Markus, > how do I reform this query to work with 7.0.2? Better question: Why are you working with 7.0.2? Even the mass-market Linuxdistros (like Red Hat and SuSE) now come with7.1.x. > select * from personen join (select count(personen_id), personen_id from > orders group by personen_id) as ordertemp on personen.personen_id = > ordertemp.personen_id Acutally, this query needs some reforming on its own. While it will work, thefollowing version will achieve the same result,much faster, in 7.1 (and 7.2,for that matter): SELECT personen.field1, personen.field2, personen.field3, count(order_id) asno_orders FROM personen LEFT OUTER JOIN orders ON personen.personen_id =orders.personen_id GROUP BY personen.field1, personen.field2, personen.field3 ... you see, your subselect above is completely unnecessary. And slower than aLEFT OUTER JOIN. Simplicity, simplicity,simplicity! Now, we have the problem of no LEFT JOIN support in 7.0, so: SELECT personen.field1, personen.field2, personen.field3, count(order_id) asno_orders FROM personen JOIN orders ON personen.personen_id = orders.personen_id GROUP BY personen.field1, personen.field2, personen.field3 UNION SELECT personen.field1, personen.field2, personen.field3, 0 as no_orders FROM personen WHERE NOT EXISTS (SELECT personen_id FROM orders WHERE personen_id =personen.personen_id); Share & Enjoy! -Josh Berkus ______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete informationtechnology josh@agliodbs.com and data management solutions (415) 565-7293 for law firms, small businesses fax 621-2533 and non-profit organizations. San Francisco
В списке pgsql-sql по дате отправления: