外部キーを利用したタグのAND検索の方法
MySQLを使っています。条件「タグ"青"かつタグ"大"と紐付けられたポスト」の検索方法がわかりません。
以下のようなテーブルを作成しました。
mysql> CREATE TABLE IF NOT EXISTS post (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT
);
mysql> CREATE TABLE IF NOT EXISTS tag (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)
);
mysql> CREATE TABLE IF NOT EXISTS tagpost (
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
post_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
FOREIGN KEY (post_id) REFERENCES post(id),
FOREIGN KEY (tag_id) REFERENCES tag(id)
);
データは以下のように挿入しました。
mysql> SELECT * FROM post;
+----+
| id |
+----+
| 1 |
| 2 |
+----+
2 rows in set (0.00 sec)
mysql> SELECT * FROM tag;
+----+------+
| id | name |
+----+------+
| 8 | 青 |
| 9 | 大 |
+----+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM tagpost;
+----+---------+--------+
| id | post_id | tag_id |
+----+---------+--------+
| 1 | 1 | 8 |
| 2 | 1 | 9 |
| 3 | 2 | 8 |
+----+---------+--------+
3 rows in set (0.00 sec)
この時、「タグ"青"またはタグ"大"と紐付けられたポスト」を検索する場合は以下のSQLで出来たのですが、
mysql> SELECT * FROM post
INNER JOIN tagpost ON tagpost.post_id = post.id
INNER JOIN tag ON tagpost.tag_id = tag.id
WHERE tag.name = '青' OR tag.name = '大'
;
別の条件で、「タグ"青"かつタグ"大"と紐付けられたポスト」を検索する方法がわかりません。
わかる人いたら教えてください。よろしくお願いいたします。