我正在使用標籤爲歌曲製作搜索引擎,並且我無法構建將列出與標籤匹配的所有歌曲的SQL查詢。查詢搜索歌曲以包含所有請求的標籤
數據庫看起來是這樣的: http://i.imgur.com/5zmfAz8.png
歌曲必須通過一箇中間表(SongTags)許多標籤。
讓我們人口爲例:
標籤: 電,器樂,精力充沛,憂鬱,人聲,搖滾
歌曲: SONGA(電,憂鬱,聲樂) 歌曲B (Instrumental,Melancholic,Rock) SongC(Energetic,Vocal)
搜索應返回包含所有請求標籤的歌曲。
搜索1:
「聲樂」 的回報:SONGA,歌曲B
搜索2:
「聲樂」, 「精力充沛」 的回報:SongC
Search3:
「美聲」,「精力充沛」,「電」返回:無
我看看怎麼做一個搜索1個標籤,但不能在多個標籤。 對於爲例的搜索1,我知道這會工作:
SELECT * FROM "songs"
INNER JOIN "song_tags" ON "song_tags"."song_id" = "songs"."id"
INNER JOIN "tags" ON "tags"."id" = "song_tags"."tag_id"
WHERE "tags"."name" = 'Vocal'
但後來我有我怎麼能執行搜索2不知道,因爲我需要的歌曲同時包含「聲樂」和「精力充沛」。
編輯:
我使用PostgreSQL
完美的作品!謝謝你的回答! – Leoss