Heim  >  Fragen und Antworten  >  Hauptteil

Left Join führt zu einem leeren Ergebnis

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粉743288436P粉743288436200 Tage vor394

Antworte allen(1)Ich werde antworten

  • 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;

    Antwort
    0
  • StornierenAntwort