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

締切り済みの質問

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件になってしまいます。
お知恵をお貸しください!

投稿日時 - 2003-03-16 17:42:42

QNo.499610

困ってます

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

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

回答(2)

ANo.2

> PostgreSQLだったんです・・

キツイ言い方になりますが、それを最初に書いていないのでは話になりません。
正直なところ、このテの「前提条件が抜けている」質問は見飽きました・・・。
で、その「前提条件がない質問」の大半は、ExcelまたはAccessユーザのものなので、たぶん
JetかMSDEだとアタリ(山カンとも言う)を付けてコメントした訳です。
(もしかすると、Oracleの線もあるのかな?と思ったので、一応補足しましたが)


> Join句って使えませんよね。

ちゃんと確認しました?
Postgreは使ったことがないので、確かなことは言えないけれど、参考URLで調べた限りでは、
ちょっと信じられません。(キーワード「Join」、「Left Join」で多数ヒットします)
仮に、構文上Joinが使えないとしても、まともなDBMSなら、外部結合を実現する手段は必ず
あるはずです。

参考URL:http://ml.postgresql.jp/mailman/namazu.cgi

投稿日時 - 2003-03-16 22:33:12

お礼

再度ありがとうございます!

私がうっかりDBを書かなかったばかりに他の方のイメージを悪くされたようで、ごめんなさい>Jet・MSDE使用の方々

で、SQLのほうは、質問文に書いた自分のでいけました。
外部結合なんて使わなくてもできるはずだと思ったんですよ。
お騒がせしてすみませんでした。

投稿日時 - 2003-03-17 14:13:53

ANo.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以前なら、(+)を使う必要があります。
 

投稿日時 - 2003-03-16 20:39:38

お礼

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

投稿日時 - 2003-03-16 20:55:42

あなたにオススメの質問