亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL:連接兩個表并每行重復計數?

SQL:連接兩個表并每行重復計數?

PHP
不負相思意 2023-08-19 16:13:36
音樂網站數據庫中的 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')";


查看完整回答
反對 回復 2023-08-19
?
慕桂英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

;


查看完整回答
反對 回復 2023-08-19
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號