2016-09-13 1 views
0

hier:alle Informationen von Benutzern, Beiträge und Kommentare brauche meine Tabellen in einer MySQL-Abfrage

Kommentare:

# id, user_id, post_id, message, date 
'1', '1', '1', 'This is a comment bla bla bla', '2016-09-04 11:36:11' 
'2', '1', '1', 'This is another comment bla bla bla', '2016-09-04 11:39:59' 
'3', '1', '2', 'This is a first comment', '2016-09-04 16:35:43' 
'4', '2', '2', 'Relax my friend', '2016-09-04 16:35:43' 
'5', '1', '2', 'Ok, cool.', '2016-09-04 16:36:03' 
'6', '3', '1', 'Cool bro', '2016-09-12 17:51:24' 
'7', '3', '2', 'OMG! :O', '2016-09-12 17:51:53' 

Benutzer:

# id, password, username, photo, background_photo, email, first_name, last_name 
'1', 'rqwerr23r2', 'welkdic', 'img/Friends/guy-2.jpg', './../../img/profile-cover.jpg', '[email protected]', 'Omarion', 'welkdic' 
'2', '23rqw3rq32', 'McBrewk', 'img/Friends/woman-1.jpg', './../../img/profile-cover.jpg', '[email protected]', 'Hillary', 'McBrewk' 
'3', 'wer23r23', 'jmorr', 'img/Friends/guy-2.jpg', './../../img/profile-cover.jpg', '[email protected]', 'John', 'Morrison' 

und Beiträge:

# id, user_id, date, type, message, image, shares, likes, comments_count 
'1', '1', '2016-09-01 12:09:00', 'uploaded a photo', 'TODAY IS..... beatifull day.', 'img/Post/game.jpg', '0', '0', '2' 
'2', '2', '2016-09-04 16:22:11', 'made a post', 'bla bla bla \r\n      for bootstrap css hmtl js framework.', '', '0', '0', '3' 

Hier ist meine Abfrage:

SELECT * 
     FROM posts AS p 
     RIGHT JOIN users AS u ON u.id = p.user_id 
     RIGHT JOIN comments AS c ON p.id = c.post_id AND u.id = c.user_id 
     RIGHT JOIN users AS up ON up.id = c.user_id; 

Ich brauche alle Informationen über Beiträge Benutzer und Kommentare in einer Abfrage. Gerade jetzt in meinem Ergebnis sieht alles gut aus, aber habe ein Problem mit doppeltem Ergebnis der Post-Tabelle (blau markiert - Position Nr. 2). Ich weiß nicht, warum das so ist. HOW IT LOOKS RIGHT NOW

aber es sollte so etwas wie in der nächsten Zeile Position seines Nr3 mit NULL Feld: SHOULD LOOKS LIKE THAT Bereits mit versucht ‚Gruppe von‘ und ‚deutlichem‘ ohne Glück :( Ich brauche alle Kommentare Benutzer und Beiträge in meinem Ergebnis

+0

Right Outer Join ... Switch to linke äußere Verknüpfung, da die meisten Menschen, die sie hart genug finden, zu verstehen. ("Haupttabelle links zusätzlichen Daten verbinden" anstelle von „zusätzlichen Daten rechts verbinden Haupttisch ".) – jarlh

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage – Strawberry

+0

Nö mit 'linker äußerer Verbindung' hat nicht geholfen. 3 Zeilen meiner Kommentartabelle wurden weggeworfen. Duplicate Zeile ist in der gleichen Position:/Ich brauche alle Beiträge, Kommentare und Benutzer –

Antwort

0

sollten Sie versuchen, diese

SELECT 
    * 
FROM 
    posts p 
INNER JOIN 
    users u 
ON 
    u.user_id=p.user_id 
LEFT JOIN 
    comments c 
ON 
    p.post_id=c.post_id 
INNER JOIN 
    users uu 
ON 
    c.user_id=uu.user_id 
+0

Ergebnis ist das gleiche wie in meiner Frage dargestellt. –

+0

Das ist richtig, denn Sie haben 2 Kommentare zu diesem Beitrag – sh88

+0

Ja, aber es ist nicht das Problem hier. Ich habe doppelte Zeile im Ergebnis. Siehe meine Frage –

Verwandte Themen