2014-09-28 61 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;