たとえば、
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です。
バージョンが上がると上記の書き方も通るようになるのでしょうか?
また、上記の書き方と同じ意味を持つ他の書き方をご存知でしたら教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

提示されている例だと何も選択される行はありませんが…。

(^^;
というツッコミは別にしてこれを書きかえてみると

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等を駆使すれば大抵のものは副照会なしで書けると思います。
    • good
    • 0
この回答へのお礼

うわ。確かに。
質問文の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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報