Объедините таблицы со всеми кортежами из таблицы 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
Смотрите это отличное объяснение объединений