Я хочу иметь возможность находить теги элементов под определенной категорией. Ниже приведен пример моего проекта базы данных:
images
+----------+-----+-------------+-----+
| image_id | ... | category_id | ... |
+----------+-----+-------------+-----+
| 1 | ... | 11 | ... |
+----------+-----+-------------+-----+
| 2 | ... | 12 | ... |
+----------+-----+-------------+-----+
| 3 | ... | 11 | ... |
+----------+-----+-------------+-----+
| 4 | ... | 11 | ... |
+----------+-----+-------------+-----+
images_tags
+----------+--------+
| image_id | tag_id |
+----------+--------+
| 1 | 53 |
+----------+--------+
| 3 | 54 |
+----------+--------+
| 2 | 55 |
+----------+--------+
| 1 | 56 |
+----------+--------+
| 4 | 57 |
+----------+--------+
теги и категории имеют свою собственную таблицу, связывающую идентификатор с фактическим именем (текстом).
Поэтому мой вопрос заключается в том, как узнать, что изображения с category_id
= 11 имеют tag_id
53 54 56 57.
Другими словами, как найти теги, которые имеют изображения в определенной категории?
Может быть, внутренний SELECT сделает это? Что-то вроде:
SELECT tag_id FROM images_tags WHERE image_id IN (SELECT image_id FROM images WHERE cateory_id = 11 )
попробуйте следующее:
SELECT images.*, tags.* from images, tags where images.image_id = images_tags.image_id and images.category_id = X;
Где X - желаемая категория.
tag_id
55, хотя вы получите все остальные.