我需要一點幫助。不知道爲什麼我無法理解這一點。mySQL查詢加入關聯表匹配這個AND這個OR
我有一張歌曲,流派和兩者之間的關聯表。
SONGS
song_id
song_name
active (0,1)
GENRE
genre_id
genre_name (rock,jazz,classical,newage,opera)
ASSOC
song_id
genre_id
我可以做這樣一個簡單的搜索...
SELECT s.song_name, s.song_id
FROM (songs s)
LEFT JOIN assoc a ON s.song_id = a.song_id
WHERE s.active = 1
AND a.genre_id = 1
和多搜索這樣的。
SELECT s.song_name, s.song_id
FROM (songs s)
LEFT JOIN assoc a ON s.song_id = a.song_id
WHERE s.active = 1
AND (a.genre_id = 1
OR a.genre_id = 2)
但是,如果我想得到1和2或3呢?這不起作用。
SELECT s.song_name, s.song_id
FROM (songs s)
LEFT JOIN assoc a ON s.song_id = a.song_id
WHERE s.active = 1
AND a.genre_id = 1
AND (a.genre_id = 2
OR a.genre_id = 3)
在此先感謝您的幫助。我有一種感覺,我只是看着這個錯誤的方式。
怎麼可能genre_id = 1和genre_id = 2沒有自我聯合? – jcho360
@ jcho360:很好,我的不好。按照您的建議,我已經引入了自連接。 – eggyal
哎呀,我真的需要爲每個genre_id或我想匹配的genre_ids組創建一個新的JOIN。有一個更好的方法嗎?我曾經在歌曲記錄中使用了ID,並使用了FIND_IN_SET(),但我認爲這會更快。 – Thom