Как соединить две таблицы и отсортировать результат в сложном запросе?

Как правильно изменить запрос, чтобы он вытаскивал не только самую дешевую цену, но и все остальные данные из таблицы store правильно, включая информацию о наличии скидки и другую информацию?
  • 14 ноября 2023 г. 11:59
Ответы на вопрос 2
Для соединения двух таблиц и сортировки результатов в сложном запросе можно использовать операторы JOIN и ORDER BY.

Пример запроса:

SELECT * 
FROM table1
JOIN table2 ON table1.id = table2.id
ORDER BY table1.price ASC;

В данном примере происходит соединение двух таблиц table1 и table2 по полю id. Затем результат сортируется по возрастанию значения поля price из таблицы table1.

Для того чтобы в запросе выводились не только самая дешевая цена, но и все остальные данные из таблицы store, необходимо добавить соответствующие поля из таблицы store в оператор SELECT:

SELECT table1.*, table2.field1, table2.field2, ... 
FROM table1
JOIN table2 ON table1.id = table2.id
ORDER BY table1.price ASC;

Здесь table1.* означает все поля из таблицы table1, а table2.field1, table2.field2 и так далее - конкретные поля из таблицы table2. Вы можете указать все нужные вам поля из таблицы store после SELECT, перед JOIN.

При необходимости также можно добавить фильтры WHERE или условия для выборки конкретных записей из таблицы store. Весь запрос следует адаптировать под структуру и поля ваших таблиц.
Нужно сделать несколько присоединений таблицы с информацией о игре в минимальным ценам. Вот пример: 

SELECT g.id, g.title, g.image, s.price, COUNT(s.id) as cnt, SUM(s.orders) as summ
FROM store s
LEFT JOIN games g
ON g.id = s.item_id
WHERE g.status = 'publish' 
AND s.status_item = 'publish'
AND s.price = (
    SELECT MIN(price) 
    FROM store 
    WHERE item_id = s.item_id
)
GROUP BY g.id
ORDER BY s.id DESC
LIMIT 15
Похожие вопросы