外部結合と等価結合を一度に使うことはできますか?


A、B、Cというテーブルがあるとします。

AとBは等価結合で、
AとCを外部結合にしたいと思います。

具体的にどう書けばいいのでしょうか?

SELECT
*
FROM
table_B b,
table_A a left join table_C c on a.id = c.aid
WHERE
b.id = a.bid

というようなイメージですが、動いてくれません。

回答の条件
  • 1人2回まで
  • 登録:2007/06/30 22:16:28
  • 終了:2007/07/01 09:05:35

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/06/30 22:49:42

ポイント35pt

(table_B b,table_A a) left join table_C c on a.id = c.aid

もしくは、等価結合をやめてinner joinで

(table_B b inner join table_A a on a.bid = b.id) left join table_C c on a.id = c.aid

どっちが良いかは、予測されるデータ件数分のテストデータを用意してテストしてみないと何とも言えませんが・・・


余談ですが

データベースは処理系によってパフォーマンスに大きな違いが出ますので

質問の際にはソフト名とバージョンを明記なさる事をお勧めします。

id:dingding

ありがとうございます。

すみません、環境を書いていませんでした。

MySQL4.0です。

2007/06/30 23:55:50
id:toriaezu No.2

toriaezu回答回数119ベストアンサー獲得回数72007/07/01 05:44:06

ポイント35pt

等価結合は「INNER JOIN」で、

外部結合は「LEFT OUTER JOIN」で表現することができます。

よって、以下のように書いてみてはいかがでしょうか。

SELECT

*

FROM

table_B b

INNER JOIN table_A a

ON b.id = a.bid

LEFT OUTER JOIN table_C c

ON a.id = c.aid

id:dingding

ありがとうございます。

うまくいきました。

2007/07/01 09:04:48

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません