2012-06-14 5 views
4

Создание системы инвентаризации. У меня много продуктов, и у каждого продукта есть три разные переменные. Поэтому для итоговых сумм акций я хочу группировать по двум столбцам (размер продукта &) и суммарное количество, чтобы получить общий итог.MySQL: группа по двум столбцам и сумма

--------------------------------- 
|product  |Size |Quantity | 
--------------------------------- 
|Widget one |2  |275  | 
--------------------------------- 
|Widget one |2  |100  | 
--------------------------------- 
|Widget two |3  |150  | 
--------------------------------- 
|Widget two |2  |150  | 
--------------------------------- 

То, что я хочу для вывода:
Widget один - 2: 375
Widget два - 3: 150
Widget два - 2: 150

Я понял, как группировать по одному столбцу и суммируйте, используя следующий код:

$query = "SELECT product, SUM(Quantity) FROM inventory GROUP BY product"; 
$result = mysql_query($query) or die(mysql_error()); 
// Print out result 
while($row = mysql_fetch_array($result)){ 
    echo "Total ". $row['product']. " = ". $row['SUM(Quantity)']; 
    echo "<br />"; 
} 
?> 

Я просто застрял в группировке по обеим колонкам. Является ли это возможным? или я должен просто создать три разных продукта для трех размеров и исключить эту колонку? Благодарю.

ответ

9

Основываясь на вашем примере таблицы, кажется, что вы хотите группировать по product, а не id. Вы просто нужно добавить Size столбец как SELECT списка и GROUP BY

$query = "SELECT 
      product, 
      Size, 
      SUM(Quantity) AS TotalQuantity 
      FROM inventory 
      GROUP BY product, Size"; 

Обратите внимание, что я добавил столбец псевдоним TotalQuantity, что позволит вам легко извлечь столбец из выбранной строки с помощью более чувствительный $row['TotalQuantity'], а не $row['SUM(Quantity)']

+0

Эй спасибо за помощь! да, я изменил таблицу на этот вопрос, потому что в реальной жизни это немного запутанно. Я исправил запрос, чтобы он соответствовал таблице примеров. Я собираюсь попробовать этот код прямо сейчас! – cantaffordretail

+0

Спасибо, что помогли мне с этим. Я работаю только с php и MySQL уже около месяца, но я так много учусь. Это определенно имеет смысл, и теперь я добавил некоторые новые знания в свой блок инструментов для кодирования. Большое спасибо! Я соглашусь, как только закончится таймер. – cantaffordretail

+0

Если было сделано более одного SUMing, как бы я написал функцию AS? Например, SUM (Q1), SUM (Q2), SUM (Q3) и т. Д. –

Смежные вопросы