2013-04-17 3 views
2

У меня есть три таблицы A B C, и я пытаюсь получить информацию из всех трех.MYSQL-запрос с использованием предложения Left Join и Where IN

A имеет имя пользователя аватара имени пользователя columnns, а B имеет столбец postid, даты и код C содержит комментатор столбцов postid datecommented.

Я пытаюсь выполнить запрос

Select C.comment, C.commenter, C.datecommented, B.postid, B.dateshared A.username A.avatar from B Left Join C Left join A on C.postid = B.postid AND A.userid = C.commenter where B.postid IN ('1','2','3') order by C.dateshared desc 

, но он дает следующее сообщение об ошибке:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where B.postid IN ('1', '2', '3') order by C.dateshared ' 

Может кто-нибудь указать на то, что я делаю неправильно, или подсказать, как это сделать ?

ответ

2

Каждого LEFT JOIN требует своего ON условия:

SELECT C.comment, C.commenter, C.datecommented, B.postid, B.dateshared, A.username A.avatar 
FROM B 
LEFT JOIN 
     C 
ON  C.postid = B.postid 
LEFT JOIN 
     A 
ON  A.userid = C.commenter 
WHERE B.postid IN ('1','2','3') 
ORDER BY 
     C.dateshared desc 
+0

работал как шарм –

0

Я вижу несколько проблем с примером запросом:

  • Вы отсутствующей некоторые запятые в первой части вашего запроса
  • Вы не указали ни одного критерия присоединиться к вашему соединению на C

Я бы переписать это быть что-то вроде:

SELECT C.comment, C.commenter, C.datecommented, B.postid, B.dateshared, A.username, A.avatar 
    FROM B 
    LEFT JOIN C ON C.postid = B.postid 
    LEFT JOIN A ON A.userid = C.commenter 
    WHERE B.postid IN ('1','2','3') 
    ORDER BY C.dateshared desc 
+0

работал хорошо. –

0

Это должно работать для вас, ваш запрос имел некоторые синтаксические ошибки:

Select C.comment,C.commenter,C.datecommented,B.postid,B.dateshared,A.username,A.avatar 
from B 
Left Join C on C.postid = B.postid 
Left join A on A.userid = C.commenter 
where B.postid IN ('1','2','3') 
order by C.dateshared desc 
Смежные вопросы