我有两个表,数据和agentdata。data (agentid, SimCardNumber, ProductName, Agentemail)
agentdata (id, agentid, ProductName)
目前我只交易两种产品,我想按agentemail分组查看此列表
agentemail | Product1 | Total1 | Product2 | Total2
-----------------------------------------------------------
[email protected] | 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/