Как использовать LEFT JOIN в этом запросе

У меня есть следующий запрос

SELECT
    interview_content.title `title`,
    gallery_images.img_path img
FROM
    `interview`,
    `interview_content`,
    `gallery`,
    `gallery_images`
WHERE
    `gallery_images`.`id_parrent` = `gallery`.`id`
AND
    `gallery`.`id` =  `interview`.`gallery_id`
AND
    `gallery_images`.`default` = '1'
AND
    `interview`.`id` = `interview_content`.`id_parrent`
AND
    interview_content.id_lang = '2'
ORDER BY
    interview.date DESC

Мне нужно использовать LEFT JOIN для таблиц gallery, gallery_images (чтобы получить interview.title, даже если нет галереи или изображения по умолчанию)

Большое спасибо

ОБНОВЛЕНИЕ


Проблема во втором LEFT JOIN. Я не могу заставить их работать вместе правильно. когда я пытаюсь

SELECT
    interview_content.title `title`,
    gi.img_path img
FROM
    `interview`,
    `interview_content`
LEFT JOIN `gallery` as g ON g.`id` = `interview`.`gallery_id` 
LEFT JOIN `gallery_images` as gi ON gi.id_parrent = g.`id`
WHERE
    `interview`.`id` = `interview_content`.`id_parrent`
AND
    interview_content.id_lang = '2'
ORDER BY
    interview.date DESC

it returns //Unknown column 'interview.gallery_id' in 'on clause'

person Simon    schedule 16.02.2011    source источник
comment
Можете показать свои таблицы? потому что, возможно, это не только ваш запрос, и его можно сделать проще с изменениями в ваших таблицах   -  person Yoram de Langen    schedule 17.02.2011
comment
@Tricker Проблема была в смешивании формата ANSI. Смотри мой ответ   -  person Simon    schedule 17.02.2011


Ответы (3)


Вы знаете, что вам нужно делать. Гугл твой друг?

http://en.wikipedia.org/wiki/Join_%28SQL%29#Left_outer_join

person user606723    schedule 16.02.2011
comment
почему Google, когда SO полон таких вопросов? stackoverflow.com/questions/3655716/learning-left-join -в-mysql - person AlexanderMP; 16.02.2011
comment
Проблема была в другом. Смотри мой ответ - person Simon; 17.02.2011

Попробуйте это:

SELECT
    interview_content.title `title`,
    gallery_images.img_path img
FROM
    `interview`,
    `interview_content`,
LEFT JOIN `gallery` ON (`interview`.`gallery_id` = `gallery`.`id` AND `gallery_images`.`default` = '1'), 
LEFT JOIN `gallery_images` ON `gallery`.`id` = `gallery_images`.`id_parrent`
WHERE
    `interview`.`id` = `interview_content`.`id_parrent`
AND
    interview_content.id_lang = '2'
ORDER BY
    interview.date DESC;
person w.k    schedule 16.02.2011
comment
#1064 - У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'LEFT JOIN gallery ON (interview.gallery_id = gallery.id AND `gallery_i' в строке 7 - person Simon; 17.02.2011
comment
Вы должны удалить , после interview_content - person Yoram de Langen; 17.02.2011

Не смешивайте соединения в стиле ANSI-89 и ANSI-92.

Я нашел тот же вопрос в SO, здесь.

Итак, мой запрос должен выглядеть так

SELECT
    ic.title `title`,
    gi.img_path img
FROM
    `interview` i
JOIN interview_content ic  on ic.id_parrent =  i.id AND ic.id_lang = '2'
LEFT JOIN `gallery` as g ON g.`id` = i.`gallery_id` 
LEFT JOIN `gallery_images` as gi ON gi.id_parrent = g.`id`
AND gi.`default` = '1'
WHERE
    i.`id` = ic.`id_parrent`
OPRDER BY
    `i`.`date` DESC
person Simon    schedule 17.02.2011