Как соединить таблицы в MySQL?

Добрый вечер.

Имеется две таблицы:
Таблица products, которая содержит название и описание товара.
Таблица products_variants, в которой записаны торговые предложения: product_id, price, count.

У одного товара может быть несколько предложений.

SELECT * 
FROM products
LEFT JOIN products_variants ON products_variants.product_id = products.id


Данный запрос выводит список всех предложений, как вывести только товары и, например, в переменной offers все записи из таблицы products_variants по данному товару?

Спасибо.
  • Вопрос задан
  • 4354 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Facetrollex
2 варианта решения:
1)
Делаем все одним запросом (текущий запрос можете не менять), т.е. у вас будет много строк с одинаковыми product_id (так как таблица product_variants завязана на product, как 1 : M ).
потом на бекенде делаете что-то типо такого:
$prevId = 0;
$resultArr = array();
foreach($result as $row){
if($prevId != $row['product_id'])
{
   $resultArr[$row['product_id']] = $row; //сюда ложим поля таблицы product
   $resultArr[$row['product_id']]['offers'] = $row['...']//ложим оффер первой строки, если нет- пустой массив
} else
{
   $resultArr[$row['product_id']]['offers'] = $row['...']//ложим только необходимые поля
}
$prevId = $row['product_id'];
}

print_r($resultArr);


2)
почти такой же как первый, только в 2 запроса. В 1ом вы достаете все product, во втором product_variants, а после выполнения запроса мержите эти 2 массива по ключу product_id (как в 1ом случае)
Ответ написан
AxisPod
@AxisPod
Как обычно, вместо чтения документации лучше спросить. GROUP_CONCAT.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Москва
До 200 000 ₽
div. Ставрополь
от 50 000 до 120 000 ₽
Lachestry Таганрог
от 170 000 до 200 000 ₽
01 дек. 2024, в 11:44
10000 руб./за проект
29 нояб. 2024, в 07:44
20000 руб./за проект
01 дек. 2024, в 10:13
25000 руб./за проект