Mysql 如何连接具有不同表和不同列名的多个查询
我想用不同的表和列名连接多个查询,同时需要显示重复字段的数量,如下所示 查询是:(Mysql 如何连接具有不同表和不同列名的多个查询,mysql,sql,Mysql,Sql,我想用不同的表和列名连接多个查询,同时需要显示重复字段的数量,如下所示 查询是:(Proj_uid在我需要匹配的所有表中都很常见) 需要连接两个表才能得到结果,即payment80和payment20,其中包含具有重复值的billtype列,我也想计算这些值 SELECT p.Proj_name,p.billtype, COUNT(1) as CNT FROM payment80 p where billtype='civil' GROUP BY Proj_name, b
Proj_uid
在我需要匹配的所有表中都很常见)
需要连接两个表才能得到结果,即payment80和payment20,其中包含具有重复值的billtype列,我也想计算这些值
SELECT p.Proj_name,p.billtype, COUNT(1) as CNT
FROM payment80 p where billtype='civil'
GROUP BY Proj_name, billtype
(这是通过使用单个表实现的,但我希望通过连接payment80和payment20表来获得此结果)
(我要计算的billtype值,仅显示多个重复记录)
3) 从付款中选择billtype,这里我还需要计算重复值并显示在billtype中
重复值将出现在billtype中,其中包含以下内容:
最后,我想要这样的输出:
Proj_name Agency District Division Projstatus Civilbilltype Electricbilltype
policegruha kumar chitradurga davangere ongoing 3 1
gruhayojna khan ballary ballary completed 2 2
Atered john bangalore bangalore ongoing 2 4
dcoffice ravi mangalore mangalore ongoing 1 2
spoffice mary chitradurga davangere completed 3 4
hostel jack ballary ballary completed 3 3
univercity kumar bangalore bangalore ongoing 4 2
mess Raj mysore mysore ongoing 2 1
policestation khan mysore mysore ongoing 1 4
conferencehall Rosy davangere davangere ongoing 2 2
您正在连接三个单独的表。一个是物理的,
tempproj
,另外两个是虚拟的:它们是聚合
这就是技术
SELECT p.proj_name,p.Agency,p.District,p.Division,p.Proj_status,
Civilbills.billcount as Civilbills,
Electribills.billcount as Electricbills
FROM tempproj p
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='civil'
GROUP BY Proj_name
) Civilbills ON Civilbills.Proj_name = p.proj_name
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='Electric'
GROUP BY Proj_name
) Electricbills ON Electricbills.Proj_name = p.proj_name
您的需求包括
payment80
表中的两个单独的聚合。LEFT JOIN
s可防止抑制缺少任何一类账单的项目行。请发布所有需要合并的表的表结构您的意思是链接同一个图像两次吗?直到projstatus它是从tempproj table开始的,在该billtype列之后,im从table payment80和payment20开始合并,其中结果只有一个billtype,其中包含土建、电气账单。对于每个项目名称,我有一个以上的billtype值,项目名称是这样的:policegruha有3个civil和1个Electric,我需要在billtype中计数和显示,billtype作为civilbilltype,civil作为civil,这里我只需要显示计数,而不是单独civil,civil,civil 3倍仅计数为3我需要显示这适用于civilbilltype和ElectricBillType非常感谢@Ollie但我收到一个错误,对象名称无效'tempproj'非常感谢先生,现在工作正常,一些列名有问题,就是这样。谢谢,先生
Proj_Name billtype
------------------------
policegruha civil
gruhayojna Electric
policegruha civil
dcoffice civil
spoffice Electric
dcoffice civil
Proj_name Agency District Division Projstatus Civilbilltype Electricbilltype
policegruha kumar chitradurga davangere ongoing 3 1
gruhayojna khan ballary ballary completed 2 2
Atered john bangalore bangalore ongoing 2 4
dcoffice ravi mangalore mangalore ongoing 1 2
spoffice mary chitradurga davangere completed 3 4
hostel jack ballary ballary completed 3 3
univercity kumar bangalore bangalore ongoing 4 2
mess Raj mysore mysore ongoing 2 1
policestation khan mysore mysore ongoing 1 4
conferencehall Rosy davangere davangere ongoing 2 2
SELECT p.proj_name,p.Agency,p.District,p.Division,p.Proj_status,
Civilbills.billcount as Civilbills,
Electribills.billcount as Electricbills
FROM tempproj p
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='civil'
GROUP BY Proj_name
) Civilbills ON Civilbills.Proj_name = p.proj_name
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='Electric'
GROUP BY Proj_name
) Electricbills ON Electricbills.Proj_name = p.proj_name