所以我有下表

bills
billId | bar | drinker | date    | time
001    | B1  | P1      | 11/10/18| 21:58
002    | B1  | P1      | 11/11/18| 20:58
003    | B2  | P2      | 11/12/18| 21:57
004    | B1  | P1      | 11/12/18| 21:56

transactions                      Sells
billID| item | quantity           bar  |  item  | price
001   | bud  | 3                  b1   | bud    | 2.00
002   | bud  | 3                  b1   | hite   | 5.00
003   | coors| 1                  b2   | coors  | 5.50
004   | hite | 3


成功地连接了这两个表,因为它们都使用此查询共享一个billId并获得以下结果:

SELECT b.billId, b.bar, b.drinker, t.item, t.quantity
from bills b, transactions t
WHERE b.billId = t.billID
ORDER BY b.drinker;

billId | bar | drinker | item | quantity
001    | B1  | P1      | bud  | 3
002    | B1  | P1      | bud  | 3
003    | B2  | P2      | bud  | 1
004    | B1  | P1      | hite | 3


因此,现在我想查询一下,并使用相应的价格和数量计算人P1的总价格。我只是对如何获得P1的总销售额感到困惑。我让我失望的一件事是将特定酒吧的总人数包括在内。

最佳答案

您可以JOIN三个表来获得结果:

SELECT b.drinker, b.bar, sum(t.quantity) as quantity,
       sum(t.quantity * s.price) as price
  FROM bills b
  LEFT JOIN transactions t on ( b.billId = t.billID )
  LEFT JOIN sells s on ( t.item = s.item )
 GROUP BY b.drinker, b.bar
 ORDER BY b.drinker;

08-26 18:20