2015-07-06 177 views
1

我正在試圖創建一個顯示某些來自不同表的信息的SQL查詢。但是我收到錯誤Subquery返回多於一行的SQL。我希望它顯示多行。子查詢在我的SQL查詢中返回多於1行

SELECT c.Name, 
     jn.ID, 
     jn.ActualWeight as GrossWt, 
     jn.JobNo, 
     COUNT(distinct jn.JobNo) as Jobs, 
     COUNT(distinct jd.JobID) as Dbriefs, 
     COUNT(distinct jn.OutTurn) as Outturns, 
     (select Status from jobstat where CompanyID = jn.CompanyID AND Status = "DEL") as Delivery 
FROM job_new jn 
LEFT JOIN customer c ON jn.CompanyID = c.Company_ID 
LEFT JOIN job_debriefs jd ON jn.JobNo = jd.JobID 
LEFT JOIN jobstat js ON jn.CompanyID = js.CompanyID 
WHERE jn.CompanyID = 36 

我試過添加GROUP BY和ORDER BY,但那也不管用。如果我刪除選擇國家....行只顯示一行時,應該顯示過百

+0

您一次只有一行select語句,因爲它表示單個記錄。您不能使用單一的Jobs,Dbriefs,Outturns值進行多次交付。如果可能的話,你將不得不改變你的邏輯,或者使用Joins等。 –

回答

0

你需要一個group by

SELECT c.Name, jn.ID, jn.ActualWeight as GrossWt, jn.JobNo, 
     COUNT(distinct jn.JobNo) as Jobs, 
     COUNT(distinct jd.JobID) as Dbriefs, 
     COUNT(distinct jn.OutTurn) as Outturns, 
     jobstat 
FROM job_new jn LEFT JOIN 
    customer c 
    ON jn.CompanyID = c.Company_ID LEFT JOIN 
    job_debriefs jd 
    ON jn.JobNo = jd.JobID LEFT JOIN 
    jobstat js 
    ON jn.CompanyID = js.CompanyID 
WHERE jn.CompanyID = 36 
GROUP BY c.Name, jn.ID, jn.ActualWeight as GrossWt, jn.JobNo, js.status 

我不知道什麼是子查詢應該要做的,所以我猜測js.status

原始查詢的問題是在SELECT中使用COUNT()。這將查詢轉換爲聚合查詢。沒有GROUP BY,只返回一行。在大多數其他數據庫中,您通常會遇到錯誤。

+0

好吧,我添加了GROUP BY,但它仍然只顯示1行。即使沒有COUNT行 – user123456789

+0

@ user123456789,它仍然只顯示一行。 。 。這表明只有一行符合條件。 –