Выбрать список тегов - MySQL
Формулировка задачи:
Делаю выборку тегов картинок из таблицы `image_tags` id|image_id|tag_id, теги хранятся в `tags` id|tag. Как одним запросом выбрать список тегов для картинок (IN (1, 2, 3...)) и при этом в запросе заменить ID тега на его имя?
Решение задачи: «Выбрать список тегов»
textual
Листинг программы
SELECT * FROM `tags` WHERE `id` IN (SELECT `tag_id` FROM `image_tags` WHERE `image_tags`.`image_id` IN (97, 96, 95) GROUP BY `image_tags`.`image_id`)
Объяснение кода листинга программы
В этом коде происходит выборка данных из таблицы tags по условию, которое включает в себя подзапрос.
SELECT * FROMtagsWHEREidIN (SELECTtag_idFROMimage_tagsWHEREimage_tags.image_idIN (97, 96, 95) GROUP BYimage_tags.image_id)— в этом запросе выбираются все строки из таблицыtags, в которых полеidсоответствует значению, полученному в результате подзапроса.SELECTtag_idFROMimage_tagsWHEREimage_tags.image_idIN (97, 96, 95) GROUP BYimage_tags.image_id` — в этом подзапросе выбираются все значения поляtag_idиз таблицыimage_tags, в которых полеimage_id` соответствует одному из значений в списке (97, 96, 95). Результат этого запроса используется в основном запросе. Обратите внимание, что для обозначения названий и значений переменных используются кавычки.