我有两个SQL表。
用户
ID | USERNAME
001 | Tom
002 | Jane
003 | Peter
004 | Mariah
产品展示
ID | PR_NAME | USERID
01 | Apple | 002
02 | Pear | 001
03 | Tomato | 002
04 | Apple | 003
05 | Tomato | 001
06 | Apple | 001
如果我在表格/列表/应用程序中选择“ Apple”,我想查看谁购买了“ Apple”以及这些人购买了多少产品:
USERID | USERNAME | NUM_PRODUCTS_BOUGHT
001 | Tom | 3
002 | Jane | 2
003 | Peter | 1
我试过的是
SELECT
USERS.ID, USERS.USERNAME,
COUNT(PRODUCTS.PR_NAME) AS NUM_PRODUCTS_BOUGHT
FROM
USERS
LEFT JOIN
PRODUCTS ON PRODUCTS.USERID = USERS.ID
WHERE
PRODUCTS.PR_NAME = "Apple"
GROUP BY
USERS.ID
但是它给了我NUM_ALL(1)个错误的数字,例如
ID | USERNAME | NUM_PRODUCTS_BOUGHT
001 | Tom | 1
002 | Jane | 1
003 | Peter | 1
我可以通过3种方式获得此结果,但无法获得想要的结果。
最佳答案
我认为您应该尝试使用hading子句。我还没有测试过,但是它应该可以工作:
SELECT
USERS.ID, USERS.USERNAME,
COUNT(PRODUCTS.PR_NAME) AS NUM_PRODUCTS_BOUGHT
FROM
USERS
LEFT JOIN
PRODUCTS ON PRODUCTS.USERID = USERS.ID
GROUP BY
USERS.ID
HAVING
SUM(CASE WHEN PRODUCTS.PR_NAME = "Apple" THEN 1 ELSE 0 END) > 0
关于mysql - SQL连接汇总数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23302675/