• 締切済み

SQLで・・

すみません、教えてください。 次のようなデータがあります。 table_A Name1 Name2 ----------- 1   2 3   4 table_B ID    Name --------------- 1     あ 2     い 3     う 4     え 次のような検索結果が欲しいとします。 Name1 Name2 ------------- あ    い う    え この結果を導くSELECT文はどう書けばいいでしょうか? 今、 select B.Name as Name1, C.Name as Name2 from table_A A, table_B B, table_B C where A.Name1=B.ID AND A.Name2=C.ID とやってみましたが、検索結果は0件になってしまいます。 お知恵をお貸しください!

みんなの回答

noname#4564
noname#4564
回答No.2

> PostgreSQLだったんです・・ キツイ言い方になりますが、それを最初に書いていないのでは話になりません。 正直なところ、このテの「前提条件が抜けている」質問は見飽きました・・・。 で、その「前提条件がない質問」の大半は、ExcelまたはAccessユーザのものなので、たぶん JetかMSDEだとアタリ(山カンとも言う)を付けてコメントした訳です。 (もしかすると、Oracleの線もあるのかな?と思ったので、一応補足しましたが) > Join句って使えませんよね。 ちゃんと確認しました? Postgreは使ったことがないので、確かなことは言えないけれど、参考URLで調べた限りでは、 ちょっと信じられません。(キーワード「Join」、「Left Join」で多数ヒットします) 仮に、構文上Joinが使えないとしても、まともなDBMSなら、外部結合を実現する手段は必ず あるはずです。

参考URL:
http://ml.postgresql.jp/mailman/namazu.cgi
chachako
質問者

お礼

再度ありがとうございます! 私がうっかりDBを書かなかったばかりに他の方のイメージを悪くされたようで、ごめんなさい>Jet・MSDE使用の方々 で、SQLのほうは、質問文に書いた自分のでいけました。 外部結合なんて使わなくてもできるはずだと思ったんですよ。 お騒がせしてすみませんでした。

noname#4564
noname#4564
回答No.1

  Jetなら下記の構文でOKです。 SELECT   table_B.Name,   table_B_1.Name FROM   (table_A   LEFT JOIN table_B   ON table_A.Name1 = table_B.ID)   LEFT JOIN table_B AS table_B_1   ON table_A.Name2 = table_B_1.ID 確認してませんが、SQL Serverでも、たぶんOKでしょう。 Oracleの場合、9iならJoinが使えるので、この構文でたぶん問題ないと思いますが、 8i以前なら、(+)を使う必要があります。  

chachako
質問者

お礼

ありがとうございます。 す・すみません・・ PostgreSQLだったんです・・ Join句って使えませんよね。