2 Stimmen

Mysql Tabellen mit Bedingung verbinden

Ich möchte Beiträge und Kommentare eines bestimmten Benutzers auflisten, aber auch die Beiträge auflisten, zu denen der angegebene Benutzer noch keinen Kommentar abgegeben hat.

Angenommen, ich habe die folgenden Tabellen & Inhalte

Tabelle Post

ID  TITLE
1   Mein Beitrag A
2   Mein Beitrag B
3   Mein Beitrag C

Tabelle Kommentar

ID  COMMENT         POST_ID     USER_ID
1   Mein Kommentar X        1          1
2   Mein Kommentar Y        2          1
3   Mein Kommentar Z        1          2

Ich führe aus

select * from post 
left join comment on post.id = comment.post_id
where comment.user_id=1

und natürlich habe ich erhalten

ID  TITLE        ID    COMMENT          POST_ID    USER_ID
1   Mein Beitrag A     1    Mein Kommentar X      1          1
2   Mein Beitrag B     2    Mein Kommentar Y      2          1

Ich möchte alle Beiträge erhalten, auch diejenigen, die nicht von Benutzer 1 kommentiert wurden, aber ich möchte nicht den Kommentar von Benutzer 2

ID  TITLE        ID    COMMENT          POST_ID    USER_ID
1   Mein Beitrag A     1    Mein Kommentar X      1          1
2   Mein Beitrag B     2    Mein Kommentar Y      2          1
3   Mein Beitrag C   

Vielen Dank im Voraus für Ihre Hilfe

0voto

M Khalid Junaid Punkte 61848

Verschieben Sie Ihren Bedingung von wo auf Klausel, damit Sie die Beiträge auch erhalten, wenn der Benutzer noch nicht kommentiert hat

select * from post 
left join comment
on post.id = comment.post_id
AND comment.user_id=1

Hier Demo ansehen

0voto

echo_Me Punkte 36495

Versuche es

select post.`ID`,`TITLE`,ifnull(`COMMENT`,0) comment,ifnull(`POST_ID`,0) `POST_ID`,
       ifnull(`USER_ID`,0) `USER_ID` 
from post 
left join comment
on post.id = comment.post_id
AND comment.user_id=1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X