見出し画像

【MySQL】他のテーブルの検索結果をキーにして検索する

# 書籍ID
| 書籍ID |
|--------|
| 1      |
....
#書籍タイトル
| 書籍ID |  タイトル  |
|-------|------------|
| 1     | タイトル1  | 
...
#配架
| 書籍ID | 棚番号 |
|-------|--------|
| 1     | 1-1-1  |
...

こんな構成のテーブルがあったとします。
「1つのテーブルはできるだけ小さく」「nullゆるさない」を信条にテーブルを作っていくとこうなるので設計自体は良いんですが、ここで、「棚番号1-1-1に入っている本のタイトルを取りたい」みたいなことをしたいときはクエリに一工夫必要になります。それの話。
(ここでは簡略化のため、棚番号1つにつき本1冊だけが入っているものとします)

サブクエリを使う

書籍タイトルテーブルからタイトルを取りたいだけなら

SELECT タイトルFROM 書籍タイトルWHERE 書籍ID = 1;

で良いんですが、今回はこの「書籍ID=1」の部分がそのままでは入れられません。

SELECT タイトル FROM 書籍タイトル WHERE 書籍ID = (配架テーブルを棚番号で検索した結果);

こうしたい。こういう時は実はそのまま

SELECT タイトル
 FROM 書籍タイトル
 WHERE 書籍ID = (SELECT 書籍ID FROM 配架 WHERE 棚番号 = '1-1-1');

と書けばOK。
それだけ。

この記事が気に入ったらサポートをしてみませんか?