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 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 に答える
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 に答える
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 に答える