Объедините таблицы со всеми кортежами из таблицы 1, но только с одним кортежем из таблицы 2

У меня есть две таблицы, которые я хочу объединить в MySQL. Первая - это таблица элементов каталога - у каждого элемента есть поле item_id. У меня также есть таблица изображений, которые связаны с элементами (item_id, image_id, content).

Как я могу объединить эти две таблицы, чтобы у меня был список всех элементов, а также включить один кортеж из таблицы изображений для этого элемента?

Я хочу иметь возможность генерировать список всех элементов, с одним изображением, которое связано.

Я пробовал:

SELECT  * From items i
JOIN    images im
ON      im.image_id = 
    (
    SELECT  im.image_id
    FROM    images ci
    WHERE   ci.item_id = i.item_id
    ORDER BY
            ci.item_id
    LIMIT 1
    )

но это все еще только дает мне только элементы, с которыми связано изображение... мне нужны все элементы независимо от того, есть ли изображение (левое внешнее соединение?).

Спасибо!!!!

1 ответ

Решение

Тебе необходимо left присоединиться, чтобы получить также результаты, где в другой таблице нет совпадений

SELECT i.*, min(im.image_id)
From items i
LEFT OUTER JOIN images im ON im.image_id = i.item_id
GROUP by i.item_id

Смотрите это отличное объяснение объединений

Другие вопросы по тегам