Запрос MySQL: присоединиться к этим таблицам, чтобы получить все tag_names, используемые любым данным `user_id` для всех его изображений? - PullRequest
0 голосов
/ 26 июля 2011

Рассмотрим следующую структуру таблиц:

users (user_id, ...)
images (image_id, user_id, ...)
tag_links (tag_id, image_id)
tags_names (tag_id, tag_name)

Скажем, у любого данного user_id есть несколько изображений в таблице images, а у изображения есть несколько тегов, сохраненных в tag_links.

Как я могу присоединиться к этим таблицам, чтобы получить все тэги, используемые любым данным user_id на всех его изображениях? Являются ли такие запросы (объединение нескольких таблиц) медленными и не рекомендуется, или это обычно делается?

1 Ответ

8 голосов
/ 26 июля 2011

Присоединение является обычным делом, и так оно и должно быть.

SELECT tn.tag_name
FROM tags_names AS tn
INNER JOIN tag_links AS tl ON tn.tag_id=tl.tag_id
INNER JOIN images AS i ON tl.image_id=i.image_id
WHERE i.user_id=YOURUSERID

Ваш дизайн таблицы имеет смысл, только если тег может иметь более одного имени, если не использовать столбец name в tag_links.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...