我在這裡使用的連接方式正確嗎?試圖找出程式碼中的問題在哪裡。嘗試更改內部、外部和右連接,只是為了試試。
SELECT users.region, count(internal_profile_views.user_id) from users Left JOIN internal_profile_views ON users.id = internal_profile_views.user_id AND users.id = internal_profile_views.viewed_user_id GROUP BY users.region;
表格結構:https://i.stack.imgur.com/nFUZO.jpg
我得到的輸出結果:
西0 東北 0 南 0 其他 0 中西部0
P粉9869374572024-04-02 17:42:02
根據你的架構,看起來internal_profile_views
表示使用者資料和查看該資料的使用者之間的M:N表。
在這種情況下,internal_profile_views
中具有相同的user_id
和viewed_user_id
值的行表示使用者正在查看自己的資料,具有不同值的行表示用戶正在查看其他人的資料。
在你的連接語句中,你使用了一個條件,其中user_id
和viewed_user_id
必須匹配相同的users.id
記錄才能包含在結果中。很可能你只打算在一個列上進行連接,而不是兩個。
在此基礎上,你的查詢可能是以下其中之一:
SELECT viewer.region as Viewer_Region, count(views.user_id) as Unique_Viewers FROM internal_profile_views views INNER JOIN users viewer ON views.user_id = viewer.id GROUP BY viewer.region;
SELECT profileOwner.region as Profile_Region, count(views.user_id) as Unique_Viewers FROM internal_profile_views views INNER JOIN users profileOwner ON views.viewed_user_id = profileOwner.Id INNER JOIN users viewer ON views.user_id = viewer.id GROUP BY users.region;