Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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_Select - Fatal编程技术网

MySQL上的子选择

MySQL上的子选择,mysql,select,Mysql,Select,我不知道这是否可行,但我正在尝试使用带有WHERE语句的两个连接进行select查询。我需要的是一个基于特定WHERE的字段和另一个具有不同WHERE的字段 当前SQL查询: SELECT SUM(a.totaltime), b.user_name, MONTHNAME(a.date) FROM a JOIN c on c.id = a.id JOIN b o

我不知道这是否可行,但我正在尝试使用带有WHERE语句的两个连接进行select查询。我需要的是一个基于特定WHERE的字段和另一个具有不同WHERE的字段

当前SQL查询:

SELECT SUM(a.totaltime), b.user_name, MONTHNAME(a.date)
FROM a 
JOIN c on c.id = a.id                                                                    
JOIN b on b.userid = c.userid    
LEFT JOIN d on a.projid = d.projectid                                                                       
LEFT JOIN e on a.account_id = e.salesorderid                                                          
LEFT JOIN f on e.salesorderid = f.salesorderid                                                      
LEFT JOIN g on d.projectid = g.projectid                                                                     
WHERE c.deleted != "1" AND YEAR(DATE(NOW())) AND ( f.cf_991 = '1' OR g.cf_990 = '1') 
group by user_name,MONTHNAME(a.date);

这很好,但这次我需要包括另一个字段,其中包括:

WHERE c.deleted != "1" AND YEAR(DATE(NOW())) AND ( f.cf_991 = '0' OR g.cf_990 = '0') 
非常感谢您的帮助,谢谢

编辑:

电流输出为:

 total_time        username        MONTHNAME(a.date)
 22.5              admin           April
 21                admin           June
 15                max             April
因此,以上是基于f.cf_991='1'或g.cf_990='1'

我需要的是:

 total_time        username        MONTHNAME(a.date)        total_time_2  
 22.5              admin           April                    5
 21                admin           June                     9
 15                max             April                    13
total_time_2基于f.cf_991='0'或g.cf_990='0'。

试试这个

SELECT SUM(CASE WHEN f.cf_991 = '1' OR g.cf_990 = '1' THEN a.totaltime END) as total_time
, b.user_name, MONTHNAME(a.date)
, SUM(CASE WHEN f.cf_991 = '0' OR g.cf_990 = '0' THEN a.totaltime END) as total_time_2
FROM a 
JOIN c on c.id = a.id                                                                    
JOIN b on b.userid = c.userid    
LEFT JOIN d on a.projid = d.projectid                                                                       
LEFT JOIN e on a.account_id = e.salesorderid                                                          
LEFT JOIN f on e.salesorderid = f.salesorderid                                                      
LEFT JOIN g on d.projectid = g.projectid                                                                     
WHERE c.deleted != "1" 
AND YEAR(CURDATE()) = a_column_containing_a_date
AND (
       ( f.cf_991 = '1' OR g.cf_990 = '1') 
     OR
       ( f.cf_991 = '0' OR g.cf_990 = '0')
    )
group by user_name,MONTHNAME(a.date);
SELECT 
SUM(if(f.cf_991 = '1' || g.cf_990 = '1',a.totaltime,0)),
SUM(if(f.cf_991 = '0' || g.cf_990 = '0',a.totaltime,0)),
b.user_name, MONTHNAME(a.date) FROM a 
JOIN c on c.id = a.id 
JOIN b on b.userid = c.userid
LEFT JOIN d on a.projid = d.projectid 
LEFT JOIN e on a.account_id = e.salesorderid
LEFT JOIN f on e.salesorderid = f.salesorderid
LEFT JOIN g on d.projectid = g.projectid
 WHERE c.deleted != "1" AND YEAR(DATE(NOW()))
and (( f.cf_991 = '1' OR g.cf_990 = '1')  or( f.cf_991 = '0' OR g.cf_990 = '0') )
group by ser_name,MONTHNAME(a.date);

“这次我需要包括另一个字段WHERE将是”what do Means?也就是说,我需要另一个基于WHERE
和YEAR(DATE(NOW())
)的列,而不是用另一个WHERE
和YEAR(DATE(NOW())
,这是做什么的?您能提供更多关于您想要的数据库和样本输出的信息吗?”,YEAR函数以数字形式返回YEAR,而不是以布尔值(!?)形式返回YEAR。查询的这一部分根本不会影响查询本身。另一方面,如果你写
YEAR(somedatecolumn)=YEAR(DATE(NOW())
,那么它会有一些意义。YEAR((CURDATE())上有一个额外的括号,应该是YEAR(CURDATE()),但它很好用!!:D谢谢