2015-09-02 3 views
1

У меня есть запрос sql sql, но когда я пытаюсь запустить запрос, он выдает ошибку без 1111, пожалуйста, помогите мне.Общая ошибка: 1111 Недопустимое использование групповой функции

select count(distinct id_student) count, 
CASE 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') < CURDATE()) THEN 'Subscription Expired' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) = sum(total_test_count)) THEN 'Test Completed' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) < sum(total_test_count)) THEN 'Active' 
END status 
from `order` 
inner join `student` on `id_student` = `order`.`student_id_student` 
inner join `order_has_test` on `order_id_order` = `order`.`id_order` 
inner join `subscription_plan` on `id_subscription_plan` = `subscription_plan_id_subscription_plan` 
where `subscription_plan_id_subscription_plan` = 1 
group by `order`.`student_id_student`, 
CASE 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') < CURDATE()) THEN 'Subscription Expired' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) = sum(total_test_count)) THEN 'Test Completed' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) < sum(total_test_count)) THEN 'Active' 
END 
+0

Попробуйте изменить свою группу пункта в 'группы order.student_id_student, status' или лучше просто' группы по status' –

+0

Привет Маттео Я уже пытался с вышеуказанными критериями, но не работает. Каждый раз, когда я получаю ту же ошибку – MANOJ

ответ

0

После исследования и попытки некоторых тестов, наконец, я получил решение.

Выбор количества (количество) рассчитывать, статус от (выберите отсчет (id_student) рассчитывать, ПРИМЕР, КОГДА (date_format (макс (EXPIRY_DATE), '% Y-% m-% d') < CURDATE()) ТОГДА 'Subscription Expired' WHEN (date_format (max (expiry_date), '% Y-% m-% d')> = CURDATE() & & sum (completed_test_count) = sum (total_test_count)) THEN 'Test Completed' КОГДА (date_format (макс (EXPIRY_DATE), '% Y-% m-% d')> = CURDATE() & & суммы (completed_test_count) < сумма (total_test_count)) ТОГДА статус 'Активная' КОНЦА из order внутреннее соединение student на id_student = order. student_id_student внутренний присоединение order_has_test на order_id_order = order. id_order внутреннее соединение subscription_plan на id_subscription_plan = subscription_plan_id_subscription_plan где subscription_plan_id_subscription_plan = 1 группа по order. student_id_student) данные группы по статусу

0

группа должна содержать по только случай

select count(distinct id_student) count, 
CASE 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') < CURDATE()) THEN 'Subscription Expired' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) = sum(total_test_count)) THEN 'Test Completed' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) < sum(total_test_count)) THEN 'Active' 
END status 
from `order` 
inner join `student` on `id_student` = `order`.`student_id_student` 
inner join `order_has_test` on `order_id_order` = `order`.`id_order` 
inner join `subscription_plan` on `id_subscription_plan` = `subscription_plan_id_subscription_plan` 
where `subscription_plan_id_subscription_plan` = 1 
group by 
CASE 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') < CURDATE()) THEN 'Subscription Expired' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) = sum(total_test_count)) THEN 'Test Completed' 
    WHEN (date_format(max(expiry_date),'%Y-%m-%d') >= CURDATE() && sum(completed_test_count) < sum(total_test_count)) THEN 'Active' 
END 
+0

и удаляю пробел перед отдельными – user3600910

+0

Его бросая ту же ошибку – MANOJ

+0

у вас возникли проблемы с вашим местом, где у вас есть поле с этим именем «subscription_plan_id_subscription_plan»? – user3600910

Смежные вопросы