I något av följande fall, om du inte känner till PROJECT.num
/PROJECT_TO_TAGS.project_id
måste du gå med i PROJECTS
tabell för att få id-värdet för att ta reda på vilka taggar den har associerat.
Med IN
SELECT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
WHERE pt.tag_id IN (SELECT x.tag_id
FROM PROJECTS_TO_TAGS x
WHERE x.project_id = 4)
Använder EXISTS
SELECT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
WHERE EXISTS (SELECT NULL
FROM PROJECTS_TO_TAGS x
WHERE x.project_id = 4
AND x.tag_id = pt.tag_id)
Använda JOINS (detta är den mest effektiva!)
DISTINCT
är nödvändigt eftersom JOINs riskerar att duplicerad data dyker upp i resultatuppsättningen...
SELECT DISTINCT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
JOIN PROJECTS_TO_TAGS x ON x.tag_id = pt.tag_id
AND x.project_id = 4