Driver86
@Driver86
Немодератор toster.ru

Выбрать все записи с учётом связей через третью таблицу?

Есть три таблицы:

model:
id, ...

tag:
id, ...

tagRelation:
tagId, modelId

Как выбрать все модели, которые связаны с определёнными тегами?

Пока писал вопрос, пришло решение:

SELECT `model`.* FROM `model` WHERE `model`.`id` IN (SELECT DISTINCT `tagRelation`.`modelId` FROM `tagRelation` WHERE `tagRelation`.`tagId` IN (1, 2, 3))


Но верно ли оно?
  • Вопрос задан
  • 29 просмотров
Решения вопроса 1
Вроде, IMHO, все верно. Вот еще, вариант покороче:
SELECT DISTINCT `tagRelation`.tagId
FROM `model` 
INNER JOIN `tagRelation` ON `tagRelation`.`modelId` = `model`.id
WHERE 1

Или с привязкой к конкретным tagId:
SELECT DISTINCT `tagRelation`.tagId
FROM `model` 
INNER JOIN `tagRelation` ON `tagRelation`.`modelId` = `model`.id
WHERE `tagRelation`.`tagId` IN (1, 2, 3)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы