MySQL запрос для связанных статей - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть следующие таблицы:

  • Артикул (idArticle)
  • ArticleTag (idArticle, idTag)
  • Tag (idTag)

Я хочу получить все статьи, которые имеют те же теги, что и статья «5», я пытался так:

SELECT DISTINCT Article.*
FROM Article
INNER JOIN ArticleTag ON Article.idArticle = ArticleTag.idArticle 
       AND ArticleTag.idArticle = "5"
WHERE 1 = 1
ORDER BY title
LIMIT 40

Но он показывает все статьи, а не связанные с ними.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Попробуйте

select a.* from Article a
inner join ArticleTag at
  on at.idArticle = a.idArticle
where at.idTag in (select idTag from ArticleTag where idArticle =5)

или

select a.* from Article a
inner join ArticleTag at on at.idArticle= a.idArticle
inner join ArticleTag at2 on at2.idTag = a.idTag and at2.IdArticle! = at.idArticle
where at2.idArticle = 5
1 голос
/ 20 февраля 2012
SELECT DISTINCT Article.*
FROM Article
INNER JOIN ArticleTag ON Article.idArticle = ArticleTag.idArticle 
WHERE ArticleTag.idTag IN 
(SELECT ArticleTag.idTag FROM ArticleTag WHERE ArticleTag.idArticle = '5')
ORDER BY Article.title
LIMIT 40;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...