Mysql 通过连接3个表来计算行数
我的问题如下所示Mysql 通过连接3个表来计算行数,mysql,Mysql,我的问题如下所示 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.i
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
assignmarketreport
agentId status
2 Y
2 Y
agentId status
2 Y
2 Y
2 Y
agentId adminsId
2 0
代理
agentId status
2 Y
2 Y
agentId status
2 Y
2 Y
2 Y
agentId adminsId
2 0
现在count(agentId先生)
应该返回3
和
count(au.agentId)
应返回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
试试下面的方法
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
首先查询3个计数
计数(单位)、计数(市场端口)、计数(代理)
并将它们插入计数中
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
}
}
对于($i=0;$count首先查询3个计数计数(单位)、计数(市场端口)、计数(代理)
并将它们插入计数中
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
}
}
对于($i=0;$count请尝试以下操作:
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
试试这个:
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
状态是相等还是不同?我的意思是,这是真实数据,还是只是一个随机示例?有点真实。我将获取状态为“Y”的数据状态是相等还是不同?我的意思是,这是真实数据,还是只是一个随机示例?有点真实。我将获取状态为“Y”的数据,获取一个错误#1064-您的SQL系统中有一个错误ntax;查看与MySQL服务器版本对应的手册,以了解在“a.agentId=b.agentId LEFT JOIN”附近使用的正确语法(选择agentId,COUNT(a'在第8行
@Deepak再试一次,很抱歉输入错误。谢谢它现在可以工作了。如果我必须再添加一个与assignunits
结构相同的表,我可以用left join来连接它吗?@Deepak是的,你可以这样做。出于某种原因,@Joe G Joseph answer为我工作,你的回答给了我不正确的结果。注意:
我已经添加了select子查询中的edwhere
子句..获取错误#1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在“a.agentId=b.agentId LEFT JOIN”附近使用的正确语法(选择agentId,COUNT(a'在第8行
@Deepak再试一次,很抱歉输入错误。谢谢它现在可以工作了。如果我必须再添加一个与assignunits
结构相同的表,我可以用left join来连接它吗?@Deepak是的,你可以这样做。出于某种原因,@Joe G Joseph answer为我工作,你的回答给了我不正确的结果。注意:
我已经添加了select子查询中的edwhere
子句..如果我在该子查询中添加了一个表怎么办?哪个表具有相同的结构?如果我在该子查询中添加了一个表怎么办?哪个表具有相同的结构?