Dalam salah satu kasus berikut, jika Anda tidak mengetahui PROJECT.num
/PROJECT_TO_TAGS.project_id
, Anda harus bergabung dengan PROJECTS
tabel untuk mendapatkan nilai id untuk mengetahui tag apa yang terkait.
Menggunakan DI
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)
Menggunakan 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)
Menggunakan GABUNG (ini yang paling efisien!)
DISTINCT
diperlukan karena BERGABUNG berisiko memunculkan data duplikat di kumpulan hasil...
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