2016-11-30 1 views
0

Ich habe zwei Tabellen activity_log und user_followers. Ich muss diesen beiden Tabellen beitreten und die Aktivität eines Benutzers mit der Benutzeraktivität abrufen, die er verfolgt (sagen wir Benutzer_id 6 folgt Benutzer_ID 4). Aber die folgende Abfrage gibt nur die Aktivität des Benutzers mit der ID 6 zurück. Ich möchte die Aktivität des Benutzers mit der ID 6 plus die Aktivität des Benutzers abrufen, dem er folgt.Verknüpfen Sie zwei Tabellen für eine bestimmte Tabelle Felder

Abfrage

SELECT activity_log.* 
FROM activity_log 
    join user_followers ON activity_log.user_id = user_followers.follow_id 
     AND activity_log.user_id = 6; 

activity_log:

enter image description here

user_followers:

enter image description here

+0

Sie erklären uns nicht, was Ihr Problem ist? Gibt es einen Fehler? Vielleicht haben Sie ein unerwartetes Ergebnis? Bitte präzisieren Sie – olibiaz

+0

Wenn Sie nur prahlen wollten, ist das, was ein Twitter-Konto ist. Es sei denn, Sie haben ein Problem, das Sie nicht erwähnt haben? –

Antwort

0

Klingt so, als ob Sie die Aktivität von user_id 6 plus die Aktivität der Benutzer, denen er folgt, möchten. Das wäre:

SELECT activity_log.* 
FROM activity_log 
LEFT OUTER JOIN user_followers 
    ON activity_log.user_id = user_followers.follow_id 
WHERE (activity_log.user_id = 6 OR ISNULL(user_followers.user_id,0) = 6); 

Die LINKE OUTER wird verwendet, falls user_id 6 keine Follower hat.

+0

Ich habe diesen Fehler, wenn Sie Ihre Abfrage ausführen 'SQL-Fehler (1582): Falsche Parameteranzahl im Aufruf der systemeigenen Funktion 'ISNULL'' –

+0

Haben Sie am Ende das Komma Null vergessen? ISNULL (user_followers.user_id, ** 0 **) – Eric

Verwandte Themen