2017-06-22 55 views
0

我有一個外鍵關係數據的三個表,但是當我做一個查詢它給錯誤等作爲Syntax error or access violation: 1055 Expression #22 of SELECT list is not in GROUP BY clause and contains nonaggregated column invoices.imported'mysql的三代表與聚合列和組參加由

下面是我的表結構

jobs 

id  invoice_no  customer_id 
1  H045    1 
2  A041    2 

job_detials 

id  job_id  est_start_date  est_off_date  
1   1   04-01-2017  01-01-2017 
2   1   05-02-2017  03-06-2017 
3   1   01-05-2017  17-04-2017 
4   2   14-04-2017  15-02-2017 
5   2   12-04-2017  03-04-2017 

invoices 

id  job_id  imported 
1  1    1 
2  2    0 

而我試圖執行結果的查詢。

select `jobs`.`id` as `job_id`, `invoices`.`imported`, 
MIN(job_details.est_start_date) as est_start_date, MAX(job_details.est_off_date) as est_off_date, `jobs`.`invoice_no` from `jobs` 
left join `job_details` on `job_details`.`job_id`= `jobs`.`id` left join `invoices` on `invoices`.`job_id` = `jobs`.`id` 
group by `jobs`.`id` 

有些身體可以幫我解決這個錯誤。 ?謝謝

回答

3

在許多SQL數據庫中,您必須GROUP BY所有非聚合字段;在這種情況下,您需要按job_id,importedinvoice_no進行分組。

在某些配置下,MySQL允許你省略這些字段,但是最近的默認值往往會限制這樣的語法,因爲選擇了諸如invoices之類的東西。 imported,這不是主鍵被分組的表中的一部分,而沒有對其進行分組可能具有非確定性結果。

+0

忍者大概需要5秒鐘。 –

+0

@Uueerdo:好的將嘗試按這些列分組 – 06011991

+0

@Uererdo:感謝您的信息。有效 ! – 06011991