0

我的查询如下所示

select count(au.agentId), count(mr.agentId)
       from agents a
       left join assignunits au on au.agentId=a.id
       left join assignmarketreport mr on mr.agentId=a.id                        
       where a.adminsId='0' 
       and a.id='29' group BY `mr`.`agentId`, au.agentId ASC

我得到的值count(au.agentId)与 的值相同count(mr.agentId)

我想要的是:

对于以下示例数据

分配单位

agentId     status
     2      Y
     2      Y

分配市场报告

agentId     status
     2      Y
     2      Y
     2      Y

代理

agentId     adminsId
     2      0

现在count(mr.agentId)应该返回3
并且count(au.agentId)应该返回2

4

3 回答 3

2

试试下面的,

SELECT  b.totalAgentUnits, c.totalAgentReport
FROM    Agents a
        LEFT JOIN
        (
            SELECT agentID, COUNT(agentID) totalAgentUnits
            FROM assignunits
            GROUP BY agentID
        ) b ON a.agentID = b.agentID
        LEFT JOIN
        (
            SELECT agentID, COUNT(agentID) totalAgentReport
            FROM assignmarketreport
            GROUP BY agentID
        ) c ON a.agentID = c.agentID
于 2012-10-01T04:28:59.903 回答
2

试试这个:

 select au_agentId,mr_agentId 
  from 
          (select a.agentId,count(au.agentId) as au_agentId  
           from   agents a
           left join assignunits au 
           on     au.agentId=a.agentId
           where  a.adminsId='0'
           group  by a.agentId )au
      join
      (select a.agentId,count(mr.agentId) as mr_agentId   
       from   agents a
           left join assignmarketreport mr 
           on    mr.agentId=a.agentId
           where a.adminsId='0'
           group by a.agentId)mr  
      on    au.agentId=mr.agentId       


SQL 小提琴演示

于 2012-10-01T04:39:19.000 回答
1

首先查询一个 3 个计数count(units), count(marketport),count(agents)并将它们插入到一个计数中

count(counts `count(units), count(marketport),count(agents)`)

之后,您可以设置一个 php 循环来获取每个数据并显示在每个表中

for($i=0;$count<3;$i++){
if($i==1){
//table 1
}
elseif($i==2){
//table 2
}
elsE{
//last table
}
}

意见只感谢

于 2012-10-01T04:31:53.037 回答