2015-01-24 2 views
0

У меня есть две таблицы («элементы» и «образы») и хотелось бы получить список предметов с одним изображением для каждого элемента.php выбрать только одно изображение для каждого элемента

Скажем, item_id является 1, и этот товар имеет 5 записей в таблице images, а мой элемент кода 1 будет отображаться 5 раз в цикле while, так как он имеет 5 изображений, но это не то, что мне нужно.

Мне нужен элемент для показа только один раз с одним изображением.

Вот мое заявление:

SELECT * FROM items, images 
    WHERE item_banner = 'Yes' 
    AND item_publish = 'Yes' 
    AND image_type = 'img' 
    AND item_id = image_item_id 
ORDER BY RAND(); 
+0

И какое изображение для показа? Если у вас есть 5 для каждого предмета, то какой из них выбрать? –

+0

самое первое изображение в таблице изображений, у которой есть image_item_id = 1 –

ответ

1

Вы можете присоединиться изображение по самой низкой image_id для конкретного пункта, при условии images имеет столбец ID.

Мне любопытно узнать о состоянии image_type = 'img'. У вас есть изображения с другим типом, чем img? :)

SELECT * 
FROM 
    items i 
    LEFT JOIN images 
    ON image_item_id = item_id -- Not strictly needed, I guess 
    AND image_type = 'img' 
    AND image_id = (
     SELECT MIN(image_id) 
     FROM images 
     WHERE image_item_id = item_id) 
WHERE item_banner = 'Yes' 
    AND item_publish = 'Yes' 
ORDER BY RAND(); 
+1

отлично работает благодаря вашему любопытному вопросу :), в той же таблице есть также изображение_type 'vid', которое является каналом для видео для одного и того же элемента, просто не хотел создавать новую таблицу для видео, но умный вопрос, еще раз спасибо за помощь в этом вопросе :) –

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