OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 暇なときにでも
  • 質問No.162196
  • 閲覧数258
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (2/2)

たとえば、
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です。
バージョンが上がると上記の書き方も通るようになるのでしょうか?
また、上記の書き方と同じ意味を持つ他の書き方をご存知でしたら教えてください。よろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル9

ベストアンサー率 53% (41/76)

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

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等を駆使すれば大抵のものは副照会なしで書けると思います。
お礼コメント
ro-ro-ro

お礼率 100% (2/2)

うわ。確かに。
質問文の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
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ