搜尋

首頁  >  問答  >  主體

左連接導致結果為空

我在這裡使用的連接方式正確嗎?試圖找出程式碼中的問題在哪裡。嘗試更改內部、外部和右連接,只是為了試試。

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粉743288436P粉743288436265 天前466

全部回覆(1)我來回復

  • P粉986937457

    P粉9869374572024-04-02 17:42:02

    根據你的架構,看起來internal_profile_views表示使用者資料查看該資料的使用者之間的M:N表。

    在這種情況下,internal_profile_views中具有相同的user_idviewed_user_id值的行表示使用者正在查看自己的資料,具有不同值的行表示用戶正在查看其他人的資料。

    在你的連接語句中,你使用了一個條件,其中user_idviewed_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;

    回覆
    0
  • 取消回覆