私は金曜日のケースを持っている必要があります...次のテーブルとデータがあるとします。
+------------+
| Park |
+------------+
| Cape Cod |
| Blue Ridge |
| Ice Age |
+------------+
+--------+
| Tag |
+--------+
| Biking |
| Skiing |
+--------+
+---------------------+
| ParkTags |
+------------+--------+
| Cape Cod | Biking |
| Blue Ridge | Hiking |
| Ice Age | Biking |
| Ice Age | Hiking |
+------------+--------+
つまり、公園は1つのテーブルに格納され、もう1つのテーブルにはタグが格納され、3番目のテーブルは1つ以上のタグを公園にリンクします。
私がやろうとしているのは、1つ以上のタグを選択し、すべてのタグを持つすべての公園を返すことです。上記の情報から、タグは次のように公園に関連付けられています。
サイクリング:ケープコッド氷河期
ハイキング:ブルーリッジアイスエイジ
サイクリングとハイキング:氷河期
私の質問は、クエリで何が間違っているのかということです。私が取得しようとしているのは、BikingANDHikingというタグが付いているすべての公園です。
# My query so far
SELECT
Park.name as Park,
Tag.name as Tag
FROM
ParkTags
JOIN Park ON Park.id = ParkTags.fk_park_id
JOIN Tag ON Tag.id = ParkTags.fk_tag_id
WHERE
Tag.name = 'Biking' AND Tag.name = 'Hiking'
ORDER BY
Park.name
私の期待する出力は、アイスエイジパークのみを取得することです。そのクエリを実行すると、結果はゼロになります。条件でORのANDを変更すると、3つのパークすべてになります。
ありがとう。