In einem der folgenden Fälle, wenn Sie PROJECT.num
nicht kennen /PROJECT_TO_TAGS.project_id
, müssen Sie den PROJECTS
beitreten Tabelle, um den ID-Wert zu erhalten, um herauszufinden, welche Tags damit verknüpft sind.
Eingabe verwenden
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)
Verwendung von EXISTEN
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)
Verwendung von JOINS (dies ist die effizienteste!)
Der DISTINCT
ist notwendig, weil JOINs riskieren, dass doppelte Daten in der Ergebnismenge auftauchen...
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