2016-09-23 3 views
0

Я пытаюсь получить left outer join из 2 таблиц в отношении двух таблиц, но я не в состоянии выполнить этот запрос, PHPMyAdmin дает #1064 error on line 12 при выполнении этого запроса:LEFT JOIN 2 таблиц запрос неудовлетворительной

SELECT 
pt.id as planid, 
pt.trip_name, 
pt.description, 
cor.latitude, 
cor.longitude, 
bb.id as bookmarkid, 
bb.num_of_persons as persons 
FROM 
planned_trips as pt, 
coordinates as cor, 
LEFT JOIN Bookmarkedby as bb,Users as user 
ON 
user.id = 1 AND 
user.id = bb.user_id AND 
bb.plannedtrips_id = pt.id AND 
pt.coordinates_id = cor.id' 

Я борюсь в течение часа, что мне не хватает? моя схема базы данных выглядит следующим образом:

schema1

Сейчас я просто готовлю запрос я должен выполнить этот запрос на codeIgnitor.

+1

После 'LEFT JOIN' вы не можете поместить два имени таблицы. Для каждой таблицы, к которой вы хотите присоединиться, требуется отдельное предложение LEFT JOIN. – Barmar

+0

Вы также должны использовать явные предложения 'INNER JOIN' для других таблиц. – Barmar

+0

Проблема заключается в том, чтобы объединить запрос INNER JOIN с LEFT JOIN –

ответ

2

Для каждой таблицы требуется отдельный номер LEFT JOIN.

SELECT 
    pt.id as planid, 
    pt.trip_name, 
    pt.description, 
    cor.latitude, 
    cor.longitude, 
    bb.id as bookmarkid, 
    bb.num_of_persons as persons 
FROM planned_trips as pt 
INNER JOIN coordinates as cor ON pt.coordinates_id = cor.id 
LEFT JOIN Bookmarkedby as bb ON bb.plannedtrips_id = pt.id 
LEFT JOIN Users as user ON user.id = bb.user_id AND user.id = 1 
+0

поэтому мы можем сделать повторный отдельный левый присоединение, это ново для меня спасибо –

0

Проблема находится в строке LEFT JOIN Bookmarkedby as bb,Users as user. Подумайте об изменении его на

FROM 
planned_trips as pt 
JOIN coordinates as cor ON pt.coordinates_id = cor.id 
LEFT JOIN Bookmarkedby as bb ON bb.plannedtrips_id = pt.id 
LEFT JOIN Users as user ON user.id = bb.user_id 
AND user.id = 1 
Смежные вопросы