2017-11-21 13 views
0

こんにちは、私はこのクエリエラーコード:グループ機能の1111不正使用

SELECT perf_prog.date, MAX(perf_prog.end_time) , ADDTIME((shift_time.out), "01:00:00") FROM perf_prog 
INNER JOIN Shifts ON perf_prog.emp_id = Shifts.emp_id 
INNER JOIN shift_time ON Shifts.id = shift_time.id 

WHERE perf_prog.emp_id = 920 GROUP BY perf_prog.date 

を持っており、これは、クエリ

enter image description here

の出力であるが、私はののみ値を一覧表示したいですend_timeはshift_time.outより大きい

だから私はこれをした

SELECT perf_prog.date, MAX(perf_prog.end_time) , ADDTIME((shift_time.out), "01:00:00") FROM perf_prog 
INNER JOIN Shifts ON perf_prog.emp_id = Shifts.emp_id 
INNER JOIN shift_time ON Shifts.id = shift_time.id 

WHERE perf_prog.emp_id = 920 AND MAX(perf_prog.end_time) > ADDTIME((shift_time.out), "01:00:00") GROUP BY perf_prog.date 

が、私はエラー

Error Code: 1111 
Invalid use of group function 

とその問題を解決しstackoverflowの答えを検索する時にを受けていますが、句

を持つに条件を移動しているので、私はこの

SELECT perf_prog.date, MAX(perf_prog.end_time) , ADDTIME((shift_time.out), "01:00:00") FROM perf_prog 
INNER JOIN Shifts ON perf_prog.emp_id = Shifts.emp_id 
INNER JOIN shift_time ON Shifts.id = shift_time.id 

WHERE perf_prog.emp_id = 920 GROUP BY perf_prog.date 
HAVING MAX(perf_prog.end_time) > ADDTIME((shift_time.out), "01:00:00") 

を持って、今問題はUnknown column 'shift_time.out' in 'having clause'

私は次のとおりです私のニーズに合った正しい解決策?ありがとうございました。解決策を見つけようとしていましたが、問題を解決できませんでした。

答えて

2

この列には集計が必要です。私はこれがあなたが望むものかもしれないと思う:

SELECT pp.date, MAX(pp.end_time), 
     MAX(ADDTIME((st.out), '01:00:00')) 
FROM perf_prog pp INNER JOIN 
    Shifts s 
    ON pp.emp_id = s.emp_id INNER JOIN 
    shift_time st 
    ON s.id = st.id 
WHERE pp.emp_id = 920 
GROUP BY pp.date 
HAVING MAX(pp.end_time) > MAX(ADDTIME((st.out), '01:00:00)) 
+0

あなたのすばらしい返答をありがとう。それは私の問題を解決する –