Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
两个select的Mysql连接_Mysql_Sql - Fatal编程技术网

两个select的Mysql连接

两个select的Mysql连接,mysql,sql,Mysql,Sql,我有一个表(列表)和一个名称列表,第二个表(rec)和第一个表中id引用的价格记录 第二个表(rec)标题如下所示: price|fk_id|what 我试图计算第一个表中所有名称的价格总和,但除以列what。可包含的内容:修理和购买 例如: NAME |REPAIR|BUY ---------------- Name1| 120|340 Name2| 20|40 我知道如何创建要修复的sql: SELECT z.name, COALESCE(SUM(zb.price), 0) A

我有一个表(列表)和一个名称列表,第二个表(rec)和第一个表中id引用的价格记录

第二个表(rec)标题如下所示:

price|fk_id|what
我试图计算第一个表中所有名称的价格总和,但除以列what。可包含的内容:修理和购买 例如:

NAME |REPAIR|BUY
----------------
Name1|   120|340
Name2|    20|40
我知道如何创建要修复的sql:

SELECT z.name, COALESCE(SUM(zb.price), 0) AS REPAIR FROM list z
LEFT JOIN rec zb ON zb.fk_id = z.id AND zb.what = "repair" 
GROUP BY z.id
ORDER BY z.id
如何连接第二栏购买? 我尝试:

SELECT z.name, COALESCE(SUM(zb.price), 0) AS REPAIR, col2.BUY FROM list z
JOIN (
...The same select with zb.what = buy..
) as col2
LEFT JOIN rec zb ON zb.fk_id = z.id AND zb.what = "repair" 
GROUP BY z.id
ORDER BY z.id

但它不能正常工作

不能与仅在子查询中的表和列联接。您必须更改子查询,使其也返回
z.id
,然后在zb.fk_id=col2.id上加入
。但您不需要子查询,您可以在一个查询中完成所有操作:

SELECT z.name, 
        COALESCE(SUM(IF(zb.what = "repair", zb.price, 0)), 0) AS repair,
        COALESCE(SUM(IF(zb.what = "buy", zb.price, 0)), 0) AS buy
FROM list AS z
LEFT JOIN rec AS zb ON zb.fk_id = z.id
GROUP BY z.id
ORDER BY z.id

谢谢,这正是我需要的,子查询太慢了。:)