2014-09-28 62 views
0

我有這個程序錯誤 - 選擇內部計數

SELECT COUNT(a.id_badania) AS iloscBadan, COUNT(b.zdjecie) AS iloscZdjec, COUNT (SELECT id_badania FROM Badania WHERE status='W trakcie realizacji';) 
FROM Badania a 
INNER JOIN Zdjecia b ON a.id_badania = b.id_badania 

而這個錯誤

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊正確的語法使用近「SELECT id_badania FROM Badania WHERE狀態=」 W trakcie realizacji「)FROM Badani」在行1

我不知道SQL良好。

+0

你到底想達到什麼目的? – Mureinik 2014-09-28 16:41:19

+0

刪除'W trakcie realizacji'後的分號 – QuakeCore 2014-09-28 16:43:55

回答

1

您可以使用和使用情況語句來算值特定狀態

SELECT COUNT(a.id_badania) AS iloscBadan, COUNT(b.zdjecie) AS iloscZdjec, Sum(case when status='W trakcie realizacji' then 1 else 0 end) 
    FROM Badania a 
    INNER JOIN Zdjecia b ON a.id_badania = b.id_badania 
1

你不能把一個子查詢中的聚合函數。並且在查詢中間有一個分號。我猜你只是想要condtiional聚合。無論是這樣的:

SELECT COUNT(a.id_badania) AS iloscBadan, COUNT(b.zdjecie) AS iloscZdjec, 
     SUM(status = 'W trakcie realizacji') 
FROM Badania a INNER JOIN 
    Zdjecia b 
    ON a.id_badania = b.id_badania; 

或者:

SELECT COUNT(a.id_badania) AS iloscBadan, COUNT(b.zdjecie) AS iloscZdjec, 
     COUNT(DISTINCT case when status = 'W trakcie realizacji' then a.id_badania end) 
FROM Badania a INNER JOIN 
    Zdjecia b 
    ON a.id_badania = b.id_badania;