みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PostgreSQLでサブクエリーをJOINする方法

たとえば、
select A.field1, B.field1
from
(select field1 from table1 where field2='x') A,
(select field1 from table2 where filed2='y') B
where A.field2=B.field2;
のようなことをしたいのですが、
Oracleだとこの方法でデータを取ってこれるのですが、PostgreSQLだとエラーで返ってきてしまいます。
PostgreSQLのバージョンは6.5.3です。
バージョンが上がると上記の書き方も通るようになるのでしょうか?
また、上記の書き方と同じ意味を持つ他の書き方をご存知でしたら教えてください。よろしくお願いします。

投稿日時 - 2001-11-03 09:20:28

QNo.162196

暇なときに回答ください

質問者が選んだベストアンサー

提示されている例だと何も選択される行はありませんが…。(^^;
というツッコミは別にしてこれを書きかえてみると

SELECT A.field1, B.field
FROM table1 A, table2 B
WHERE A.field2 = B.field2
AND A.field2 = 'x'
AND B.field2 = 'y'

となります。
カラムの選択条件(WHERE句)に副照会が必要でない限り、outer join等を駆使すれば大抵のものは副照会なしで書けると思います。

投稿日時 - 2001-11-03 13:04:13

お礼

うわ。確かに。
質問文のSQL文はこうかも。訂正。
select A.field1, B.field1
from
(select field1, field2 from table1) A,
(select field1, field2 from table2) B
where A.field2=B.field2;

実は、文に明示していないフィールド名(たとえばfield3があったとしてfield3)はwhere文で使ってはいけない、という思い込みをしていたんです。今思うとバカです。解決しました。どうもありがとうございました。

投稿日時 - 2001-11-03 18:07:16

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問