我有两个表,数据和代理数据。
数据(agentid、SimCardNumber、ProductName、Agentemail)
agentdata (id,agentid,产品名称)
目前我只处理两种产品,我想按代理电子邮件分组查看此列表
agentemail | Product1 | Total1 | Product2 | Total2
-----------------------------------------------------------
abc@gmail.com | ball | 5 | bat | 0
我尝试了此查询,但无法并排显示两个产品及其计数。
SELECT a.agentid, d.Agentemail, a.ProductName, COUNT(a.ProductName) AS Total
FROM data AS d, agentdata AS a
WHERE d.agentid=a.agentid
GROUP BY a.ProductName
最佳答案
SQL 并不是为处理此类并行事务而构建的。它适用于行,您希望它显示列。
您的原始查询应GROUP BY agentid, ProductName
以将代理从产品总数中分离出来。
如果您知道只有两种产品而没有更多,则可以编写一个查询来并排显示这两种产品。如果您添加第三种产品,则不会包含该产品。
SELECT a.agentid, d.Agentemail,
'ball' AS Product1,
SUM(IF(a.ProductName = 'ball', 1, 0)) AS Total1,
'bat' AS Product2,
SUM(IF(a.ProductName = 'bat', 1, 0)) AS Total2,
FROM data AS d, agentdata AS a
WHERE d.agentid=a.agentid
GROUP BY agentid
这种查询对于快速检查数据来说是可以的,但是您的前端应该使用更可靠的查询并在那里构建表。
关于php - 计算 1 列中的项目并将其分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18299535/