音樂網站數據庫中的 3 個表:用戶(用戶 ID、名稱、密碼)曲目(曲目 ID、標題)user_likes_this_track ( user_id, track_id )當某個特定用戶登錄時。使用 PHP、MySQL 和 JSON API,我可以從最后一個表中檢查用戶喜歡哪些歌曲。SELECT * FROM `track` WHERE `id` IN (SELECT `track_id` FROM `user_likes_this_track` WHERE `user_id` = '$logged_user_id' )我還想在客戶端應用程序中顯示特定歌曲的表情符號。如果他喜歡它就顯示喜歡的表情符號資源,如果他不喜歡這首歌就顯示其他資源。這個查詢完成了這項工作:SELECT COUNT(`track_id`) AS `liked` FROM `user_likes_this_track` WHERE `user_id` = '$logged_user_id' AND `track_id` = '$track_id'; 如果用戶喜歡這首歌,Liked為1,如果不喜歡,Liked 為0但是,問題是當他去搜索包含他可能喜歡或不喜歡的曲目的過濾列表時。從用戶的角度來看,我試圖從搜索結果中獲取track_id、track_title、Likes甚至所有曲目的組合,以獲得如下內容:track_id, title, liked1 ,'ZHU...' , 1 // he likes this song2 ,'Sia...' , 1 // he likes SIA too3 ,'other.' , 0 // 0 occurrence in user_likes_this_track...是否可以在不更改和添加額外表的情況下找到此解決方案的神奇查詢?感謝大家抽出寶貴的時間。
2 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
你可以使用類似的東西
$sql = "SELECT track_id, title, 1 as liked from track where track_id NOT IN (SELECT track_id from user_likes_this_track where user_id = '$logged_user_id') UNION SELECT track_id, title, 0 as liked from track where track_id IN (SELECT track_id from user_likes_this_track where user_id = '$logged_user_id')";

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
SELECT
a.track_id,
a.title,
CASE
WHEN b.track_id IS NULL THEN 0
ELSE 1
END
FROM track a
LEFT JOIN user_likes_this_track b ON b.track_id = a.track_id
AND b.user_id = :userID
;
- 2 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消