Heim > Fragen und Antworten > Hauptteil
Verwende ich hier die richtige Verbindungsmethode? Ich versuche herauszufinden, wo im Code das Problem liegt. Versuchen Sie, die inneren, äußeren und rechten Verbindungen zu ändern, um es auszuprobieren.
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;
Tabellenstruktur: https://i.stack.imgur.com/nFUZO.jpg
Die Ausgabe, die ich bekomme:
West 0 Nordost 0 Süden 0 Andere 0 Mittlerer Westen 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;