質問: outer joinについて こんにちわ。 outer joinを使ったsql文について質問させてください。 今3つのテーブル(employees, customers, zipcodes)があるとします。郵便番号ごとに従業員とお客さんのidを表示するsqlはわかるのですが(下に書きます)、郵便番号ごとに従業員とお客さんの数を表示するsql文がわからず、途方に暮れてます。どなたか教えていただけないでしょうか? よろしくお願いいたします。 郵便番号ごとに従業員とお客さんのid sql> select z.zip, e.eno, c.cno from zipcodes z full outer join employees e on (z.zip=e.zip) full outer join customers c on (z.zip=c.zip); zip eno cno ---------- ---------- ---------- 49008 1001 1111 49009 2222 49001 1000 3333 49017 1002 49023 49024 それをこうしたいのですが・・ zip enum cnum ---------- ---------- ---------- 49008 1 1 49009 1 49001 1 1 49017 1 49023 49024
回答: こんなんでできそうな気がしますが、どうでしょう? こちらに環境がありませんので試していません。 もしも、期待されている結果と違う場合はお手数ですが補足をお願いいたします。 select z.zip, nvl(e.e_cnt, 0) e_cnt, nvl(c.c_cnt, 0) c_cnt from zipcodes z full outer join (select count(*) e_cnt, zip from employees group by zip) e on (z.zip=e.zip) full outer join (select count(*) c_cnt, zip from customers group by zip) c on (z.zip=c.zip);