【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。
それだけ。
この記事が気に入ったらサポートをしてみませんか?