2013-12-07 5 views
0

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

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

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

Я пробовал:

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 
    ) 

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

Спасибо !!!!

+0

Вы правильно, используйте левое соединение. Вы попробовали? любые вопросы? –

ответ

0

Вам нужен 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 

См this great explanation of joins

+0

Большое вам спасибо! Это сработало ... – user2330672

Смежные вопросы