我有两个表,数据和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/

10-12 16:23