0

現在、SID ごとにリストされた個々の取引価格の表があります。

+-----+-----------+
| SID | Item Cost |
+-----+-----------+
| 001 | $1.50     |
| 002 | $2.25     |
| 003 | $3.50     |
| 002 | $5.80     |
| 002 | $1.00     |
| 003 | $20.00    |
+-----+-----------+

また、アイテムが特定のタイプ (AlaCarte) に一致する SID ごとにトランザクションを一覧表示し、各アイテムの価格を示すクエリもあります。

SELECT April2013.SID, April2013.Price, MenuItems.MealType
FROM April2013 LEFT JOIN MenuItems ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte';

各 SID のリストがあり、各 SID のすべてのトランザクションが合計されるように、これらを SID ごとにリストしたいと思います。

+-----+-------------------------+
| SID | Sum of all Transactions |
+-----+-------------------------+
| 001 | $1.50                   |
| 002 | $45.00                  |
| 003 | $23.25                  |
+-----+-------------------------+

どんな援助でも大歓迎です。ありがとう!

4

1 に答える 1

1

sum()私が何かを見逃していない限り、集約関数をGROUP BYtheに適用する以下を使用できるはずですSID:

SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013 
INNER JOIN MenuItems 
  ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;

MenuItems の WHERE 句にフィルターがあるため、クエリを LEFT JOIN から INNER JOIN に変更したことに気付くでしょう。これにより、両方のテーブルで一致する行のみが返されます。

すべてのApril2013行を返す場合は、LEFT JOIN クエリを次のように変更して、WHERE フィルターを JOIN 条件に移動します。

SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013 
LEFT JOIN MenuItems 
  ON MenuItems.Item = April2013.Item
  AND MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;
于 2013-05-17T14:27:52.883 に答える