- 締切済み
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件になってしまいます。 お知恵をお貸しください!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
> PostgreSQLだったんです・・ キツイ言い方になりますが、それを最初に書いていないのでは話になりません。 正直なところ、このテの「前提条件が抜けている」質問は見飽きました・・・。 で、その「前提条件がない質問」の大半は、ExcelまたはAccessユーザのものなので、たぶん JetかMSDEだとアタリ(山カンとも言う)を付けてコメントした訳です。 (もしかすると、Oracleの線もあるのかな?と思ったので、一応補足しましたが) > Join句って使えませんよね。 ちゃんと確認しました? Postgreは使ったことがないので、確かなことは言えないけれど、参考URLで調べた限りでは、 ちょっと信じられません。(キーワード「Join」、「Left Join」で多数ヒットします) 仮に、構文上Joinが使えないとしても、まともなDBMSなら、外部結合を実現する手段は必ず あるはずです。
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以前なら、(+)を使う必要があります。
お礼
ありがとうございます。 す・すみません・・ PostgreSQLだったんです・・ Join句って使えませんよね。
お礼
再度ありがとうございます! 私がうっかりDBを書かなかったばかりに他の方のイメージを悪くされたようで、ごめんなさい>Jet・MSDE使用の方々 で、SQLのほうは、質問文に書いた自分のでいけました。 外部結合なんて使わなくてもできるはずだと思ったんですよ。 お騒がせしてすみませんでした。