みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

2つの関連するテーブルで指定した値を条件に取得したい

mysql5.1.33を使用しています。
次のような構成で、

テーブル「tbl1s」
id int(11)

テーブル「tbl2s」
id int(11)
name varchar(30)

テーブル「tbl1s_tbl2s」
id int(11)
tbl1_id int(11) tbl1sの外部キー
tbl2_id int(11) tbl2sの外部キー

テーブル「tbl1s」
+------+
|  id  |
+------+
|  1  |
+------+
|  2  |
+------+
|  3  |
+------+

テーブル「tbl2s」
+------+-------+
|  id  | name |
+------+-------+
|  1  | sato  |
+------+-------+
|  2  | suzuki |
+------+-------+
|  3  | tanaka |
+------+-------+

テーブル「tbl1s_tbl2s」
+------+-------+-------+
|  id  | tbl1_id | tbl2_id |
+------+-------+-------+
|  1  | 1    | 1   |
+------+-------+------+
|  2  | 1    | 2   |
+------+-------+------+
|  3  | 3    | 1   |
+------+-------+------+

「tbl1s」テーブルの行を「tbl2s」テーブルのnameを検索条件にして取得したいのですが
どのように記述すれば良いのでしょうか?
例えば「sato」を条件にした場合は、

テーブル「tbl1s」
+------+
|  id  |
+------+
|  1  |
+------+
|  3  |
+------+

を取得したいです。

投稿日時 - 2010-01-07 01:15:43

QNo.5573691

すぐに回答ほしいです

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

普通に考えれば、tbl1sのidではなくtbl1s_tbl2sのtbl1_idを抜く方が
現実的だと思います

select distinct tbl1_id
from tbl1s_tbl2s
inner join tbl2s on tbl1s_tbl2s.tbl2_id=tbl2s.id
and tbl2s.name='sato'

どうしてもというのだったら冗長ですが

select distinct tbl1s.id
from tbl1s
inner join tbl1s_tbl2s on tbl1s.id=tbl1s_tbl2s.tbl1_id
inner join tbl2s on tbl1s_tbl2s.tbl2_id=tbl2s.id

投稿日時 - 2010-01-07 09:31:09

お礼

ご回答ありがとうございます。
下の回答もあわせて、そのやり方を参考にしてできました。
ありがとうございます。

投稿日時 - 2010-01-07 16:31:12

ANo.1

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

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

回答(1)