inner join дайте слишком много строк
есть 2 таблицы, изображений и товаров, изображений логично что больше, и вот мой запрос(ниже код) возращает столько строк сколько строк в таблице с изображениями, а мне надо чтобы выводило столько сколько в товарах
$query = "SELECT * from images INNER JOIN products ON products.id = images.uid";
$res = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($res))
{
echo '<a target="_blank" href="/pages/product-details.php?id='.$row['id'].'" class="product-cart">
<div class="col">
<div class="product-image"><img src="/images/'.$row['url'].'" alt=""></div>
<div class="product-price-wrap">
<div class="col">
<div class="product-name">'.$row['product_name'].'</div>
<div class="product-price">$ '.$row['price'].'</div>
</div>
</div>
</div>
</a>';
}
Ответы (2 шт):
Автор решения: Максим Степанов
→ Ссылка
Вы можете группировать выборку по id товара:
SELECT * from images INNER JOIN products ON products.id = images.uid GROUP BY products.id
Автор решения: Aziz Umarov
→ Ссылка
Группировать не надо можно по другому, поскольку вы используете только 'id', 'url', 'product_name' и 'price', то можно переписать запрос иначе
SELECT DISTINCT products.id, url, product_name, price from images INNER JOIN products ON products.id = images.uid
но на случай когда у одного товара у вас много картинок тогда вам нужно определиться которую картинку вам нужно вернуть для одного продукта.
SELECT
products.id,
MAX(url),
product_name,
price
FROM images
INNER JOIN products
ON products.id = images.uid
GROUP BY
products.id,
product_name,
price