Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何连接具有不同表和不同列名的多个查询_Mysql_Sql - Fatal编程技术网

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