次のいずれかの場合、PROJECT.num
がわからない場合 /PROJECT_TO_TAGS.project_id
、PROJECTS
に参加する必要があります 関連付けられているタグを見つけるためのID値を取得するためのテーブル。
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)
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)
JOINSの使用(これが最も効率的な方法です!)
DISTINCT
JOINは、重複したデータが結果セットに表示されるリスクがあるため、必要です...
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