Mam następujące tabele:
- Artykuł (idArtykuł)
- Tag artykułu (idArticle, idTag)
- Tag (idTag)
Chcę uzyskać wszystkie artykuły, które mają takie same tagi jak artykuł „5”, próbowałem tak:
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
Ale pokazuje wszystkie artykuły, a nie te z nimi powiązane.
2
Raul Leaño Martinet
20 luty 2012, 09:43
2 odpowiedzi
Najlepsza odpowiedź
Próbować
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)
Lub
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
2
silly
20 luty 2012, 10:02
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;
1
Brian Roach
20 luty 2012, 09:51
Podobne pytania
Powiązane pytania
Nowe pytania
mysql
MySQL to darmowy system zarządzania relacyjnymi bazami danych (RDBMS) o otwartym kodzie źródłowym, który wykorzystuje język SQL (Structured Query Language). NIE UŻYWAJ tego znacznika dla innych baz danych, takich jak SQL Server, SQLite itp. Są to różne bazy danych, które używają własnych dialektów SQL do zarządzania danymi.