Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
Php 合并查询。。枢轴不工作_Php_Mysql_Sql - Fatal编程技术网

Php 合并查询。。枢轴不工作

Php 合并查询。。枢轴不工作,php,mysql,sql,Php,Mysql,Sql,我的疑问有点问题。我现在有2个查询,效果很好。但是,当我想添加另一个带有枢轴的查询时,它不起作用。我试过很多东西,但都不管用 这是我的前两个问题 $query=SET SQL\u BIG\u SELECTS=1;; $query.=从datakram、datakram2、datakram3中选择*其中datakram.NAME=datakram2.NAME和datakram2.NAME=datakram3.NAME只需加入查询: 选择d4。* 来自datakram d1 内部连接datakra

我的疑问有点问题。我现在有2个查询,效果很好。但是,当我想添加另一个带有枢轴的查询时,它不起作用。我试过很多东西,但都不管用

这是我的前两个问题

$query=SET SQL\u BIG\u SELECTS=1;;
$query.=从datakram、datakram2、datakram3中选择*其中datakram.NAME=datakram2.NAME和datakram2.NAME=datakram3.NAME只需加入查询:

选择d4。* 来自datakram d1 内部连接datakram2 d2 在d1上。`NAME`=d2。`NAME` 内部连接datakram3 d3 在d2上。`NAME`=d3。`NAME` 内连接 选择“名称”, 当'year`=2017年时,则'income`否则0将作为2017年的收入结束, 当'year`=2017时,则'expense`否则0结束为2017年的费用, 当'year`=2016年时,则'income`,否则0将作为2016年的收入结束, 当'year`=2016时,则'expense`否则0结束为2016年的费用 来自“测试数据” 按`名称分组` d4 在d3上。`NAME`=d4。`NAME`
只需加入查询:

选择d4。* 来自datakram d1 内部连接datakram2 d2 在d1上。`NAME`=d2。`NAME` 内部连接datakram3 d3 在d2上。`NAME`=d3。`NAME` 内连接 选择“名称”, 当'year`=2017年时,则'income`否则0将作为2017年的收入结束, 当'year`=2017时,则'expense`否则0结束为2017年的费用, 当'year`=2016年时,则'income`,否则0将作为2016年的收入结束, 当'year`=2016时,则'expense`否则0结束为2016年的费用 来自“测试数据” 按`名称分组` d4 在d3上。`NAME`=d4。`NAME`
一种简单的方法是在WHERE子句中进行筛选:


一种简单的方法是在WHERE子句中进行筛选:


我试过这个。但我还需要其他表中的变量。我把它改成了完整的连接。但那没用。右/左连接工作得很好…继续,在SELECT子句中添加其他列,然后:选择d1.*、d2.*、d3.*、d4.*或单独标识它们。我已经尝试过了。但我还需要其他表中的变量。我把它改成了完整的连接。但那没用。右/左连接工作得很好…继续并在SELECT子句中添加其他列,然后:选择d1.*、d2.*、d3.*、d4.*或单独标识它们。
SELECT  `name` ,
         MAX(CASE WHEN `year` = 2017 THEN `income` ELSE 0 END) AS INCOME_2017,
         MAX(CASE WHEN `year` = 2017 THEN `expense` ELSE 0 END) AS EXPENSE_2017,
         MAX(CASE WHEN `year` = 2016 THEN `income` ELSE 0 END) AS INCOME_2016,
         MAX(CASE WHEN `year` = 2016  THEN `expense` ELSE 0 END) AS EXPENSE_2016
FROM `test_data` td
WHERE EXISTS (SELECT 1 FROM FROM datakram d WHERE d.name = td.NAME) AND
      EXISTS (SELECT 1 FROM FROM datakram2 d WHERE d.name = td.NAME) AND
      EXISTS (SELECT 1 FROM FROM datakram3 d WHERE d.name = td.NAME) 
GROUP BY `name` ;