Показать одиночное изображение из базы данных

Я добавляю продукты в базу данных, и у нее есть 3 таблицы, которые products, product_images а также categories, Теперь я использую соединение, чтобы показать на передней и задней стороны, а также. Я использую один запрос, и он работает нормально, пока в таблице нет только одного изображения для каждого продукта. Но теперь у меня есть несколько изображений для одного продукта, так как я могу изменить мой запрос на любое предложение, спасибо.

$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
        pi.product_img,
        c.cat_name 
        FROM product p
        LEFT JOIN product_images pi ON pi.product_id = p.id
        LEFT JOIN categories c ON c.id = p.category_id
    ";

Если я использую этот запрос, он показывает несколько раз продукт в зависимости от количества изображений в product_images Таблица. Теперь я хочу 2 different queries один для задней стороны, где я должен отображать только одно изображение, и один для внешнего интерфейса, где я должен отображать все изображения. Еще раз спасибо.

1 ответ

Для отображения всех изображений с помощью GROUP_CONCAT...

$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
    GROUP_CONCAT(pi.product_img SEPARATOR ', '),
    c.cat_name 
    FROM product p
    LEFT JOIN product_images pi ON pi.product_id = p.id
    LEFT JOIN categories c ON c.id = p.category_id
    GROUP BY p.id,p.product_title,p.product_price,p.product_quantity,p.status, c.cat_name
";

Чтобы отобразить одно изображение, вы можете использовать MIN или же MAX

$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
MIN(pi.product_img),
c.cat_name 
FROM product p
LEFT JOIN product_images pi ON pi.product_id = p.id
LEFT JOIN categories c ON c.id = p.category_id
GROUP BY p.id,p.product_title,p.product_price,p.product_quantity,p.status, c.cat_name
";
Другие вопросы по тегам