Нужна помощь с запросом mysql

#mysql #sql

#mysql #sql

Вопрос:

У меня есть запрос mysql, который пытается объединить следующие таблицы:

 TABLE: orders_products
products_id
orders_id
products_quantity
products_price

TABLE: products
products_id
products_model
  

Мне нужен запрос, который возвращает общее количество продаж, общее значение продаж для каждого product_id и product_model для каждого продукта в таблице orders_products. Это лучшее, что я придумал на данный момент, и это просто добавляет все в одно ведро:

 SELECT 
  SUM( op.products_quantity ) AS num_sold
  ,SUM( op.final_price * op.products_quantity ) 
  ,p.products_model
FROM orders_products AS op
JOIN products AS p
WHERE p.products_id = op.products_id
  

Ответ №1:

Добавьте group by p.products_id после вашего where , и все будет хорошо

Ответ №2:

 SELECT p.products_id, p.products_model,
  SUM( op.products_quantity ) AS num_sold
  ,SUM( op.final_price * op.products_quantity ) AS sales
FROM orders_products AS op
JOIN products AS p
WHERE p.products_id = op.products_id
GROUP BY p.products_id, p.products_model
  

Комментарии:

1. 1 Вам нужно только GROUP BY p.products_id в MySQL, от p.products_model которого products_id это функционально зависит, и от которого это зависит.

2. Верно, но это требуется большинству других баз данных, и предполагается, что это делает код намного более зависимым от mysql. Я предпочитаю пытаться написать свой SQL как можно более независимым от базы данных, поэтому я думаю, что лучше включить все столбцы в group by.

Ответ №3:

Вам нужно использовать GROUP BY. Проверьте эту ссылку:http://www.w3schools.com/sql/sql_groupby.asp