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

解決済みの質問

PostgreSQLでの外部結合

PostgreSQLでの開発をしております。
今まで、Oracle,SQLServerでしか開発経験がなく、外部結合のやりかたがピンときません。
Oracleでいう以下のSQLをPostgreで書く場合、どのように記載すればよいのでしょうか?

SELECT m.no, c.value
FROM main_table m, code_master c
WHERE m.code = c.code(+)
AND m.update_date > sysdate
AND c.content_flg = "0";

main_tableのcodeがNullや、code_master.codeに対応する値がない場合でも、レコードを持ってくる。

※Oracleなどは独自のやりかたを行っているので、Joinを使うやりかたのほうがSQLとしては正しいのですが・・・。

投稿日時 - 2002-09-25 13:05:39

QNo.366227

すぐに回答ほしいです

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

↓こんな感じになると思います。

-------------------------------------------------
SELECT m.no, c.value
FROM main_table m LEFT OUTER JOIN code_master c ON (m.code = c.code)
WHERE m.update_date > 'now'
AND c.content_flg = "0";
-------------------------------------------------

ON (m.code = c.code)
のところは項目名が同じなので
USING (code)
でも良いです。

ちなみに3つ以上のテーブルを外部結合する場合は、結合の記述をカッコでくくって、別名をつける必要があるようです。

参考URL:http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/queries.html

投稿日時 - 2002-09-25 20:46:28

お礼

なるほど。外部結合したテーブルを一つのテーブルとして認識させるのですね。
FROM句に書く副問い合わせのイメージですね。
やっとピンときました。ありがとうございます。
実際の業務も3つ以上のテーブルを使ったSQLでしたので、非常に助かりました。
また、何かあればよろしくお願いします。

投稿日時 - 2002-09-26 09:46:45

ANo.4

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

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

回答(4)

ANo.3

SQLについては参考URLが役に立つかと思います。
「OUTER JOIN」(外部結合)の説明は「第6回 テーブル結合のバリエーションを増やす」にあります。

http://www.atmarkit.co.jp/fnetwork/rensai/index/index-serial.html#sql

参考URL:http://www.atmarkit.co.jp/fnetwork/rensai/index/index-serial.html#sql

投稿日時 - 2002-09-25 13:45:43

お礼

わかりやすいサイトでした。ありがとうございます。

投稿日時 - 2002-09-26 09:44:27

ANo.2

Oracleは触ったことがないのでよくわからないのですが・・・。

PostgreSQLはPrynneさんがおっしゃるように7.1から外部結合に対応しています。

私はSQL文を考えるのが苦手なので、ODBCドライバを使って、MS Accessでテーブルをリンクし、クエリを作ってそのクエリをSQLに変換して使っています。
多少の文法の違いはありますが、MS Accessで作ったSQL文がPostgreSQLで動いてくれます。

投稿日時 - 2002-09-25 13:29:27

ANo.1

PostgreSQLのバージョンはいくつでしょう?
7.0だったら、外部結合はサポートされていないので不可能ですが、7.1だったらOUTER JOINがサポートされているようです。

現在環境が無くて確認できないのですが・・・。
すいません。

参考URL:http://osb.sra.co.jp/PostgreSQL/7.1/changes.html

投稿日時 - 2002-09-25 13:19:02

補足

7.1です。リファレンスやサイトでJoinの使い方を見たのですが、イマイチわからないのです。具体例がみたいので、よろしくお願いします。

投稿日時 - 2002-09-25 13:27:10

あなたにオススメの質問