2015-04-13 2 views
0

У меня есть ошибкаSQL # 1242 - подзапрос возвращает более чем на 1 строку

1242 - подзапрос возвращает более 1 строка

в

(SELECT COUNT(*) FROM attendance GROUP BY stu_ID ) /(SELECT COUNT(if(`attstatus`='P', `attstatus`,NULL)) 
FROM attendance GROUP BY stu_ID 

Как я могу решить эту проблему и любое другое решение может показывать процент для attstatus='P'?

SELECT stu_ID,stu_name, 

GROUP_CONCAT(if(class_no="lec_1", `attstatus`, NULL)) AS 'Lecturer 1', 

GROUP_CONCAT(if(class_no="lec_2", `attstatus`, NULL)) AS 'Lecturer 2', 

COUNT(if(`attstatus`='P', `attstatus`,NULL)) AS 'total p', 

COUNT(if(`attstatus`='A', `attstatus`, NULL)) AS 'total a', 

COUNT(*) as dayTotal, 
(SELECT COUNT(*) FROM attendance GROUP BY stu_ID ) /(SELECT COUNT(if(`attstatus`='P', `attstatus`,NULL)) FROM attendance GROUP BY stu_ID) 



FROM attendance 

WHERE session_ID=1 

GROUP BY stu_ID,stu_name; 
+0

Вероятно, вы должны опубликовать эти вопросы как отдельные вопросы (со ссылками на другой, если это имеет смысл). Для первой проблемы кажется, что первая проблема «GROUP BY» вызывает проблемы. Это может помочь, если вы опишете, чего вы хотите достичь. –

+0

@ Gábor Bakos, так извините .. вызванный GROUP BY..i будет вычислять процент от общего количества p, используя общий p/daytotal – Jack

ответ

-1

Попробуйте добавить к вашему SQL: LIMIT 1
Она возвращает только один ряд