2016-08-01 4 views
0

Я хочу, чтобы SQL Query возвращал мне общее количество строк. Ниже приведен мой запрос.Функция SQL 'COUNT' не работает

SELECT COUNT(*) AS tot_std 
FROM `student_main` AS sm, 
    `student_subjects` AS stds, 
    `sub_subjects` AS ss 
WHERE stds.`student_id` = sm.`studen. t_id` 
    AND stds.`subs_id` = ss.`subs_id` 
    AND stds.`subs_id` = 1 
    AND sm.`std_postcode` LIKE '%HA02AN%' 
GROUP BY stds.`student_id` 

Запрос соединяет три таблицы: 1) student_main который является основным таблицы и хранит данные студента. 2) sub_subjects, который является основным столом для хранения информации о предметах/курсах 3) student_subjects Эта таблица состоит из как student_id, так и subs_id как внешних ключей и показывает предметы, которые принимает учащийся.

Следующий снимок экрана таблицы student_subjects.

enter image description here

Теперь, когда я запускаю запрос, он должен отображать 3 на выходе, потому что в общей сложности 3 студентов изучают предмет с идентификатором 1. но вместо этого запроса дает мне такой вывод:

enter image description here

Пожалуйста, помогите.

+1

Если вы используете 'group by', то все совокупные функции (например,' count() ') применяются к группе EACH, а не к полному набору результатов –

+0

из-за группы. Удалите группу. он будет работать –

ответ

4

Удалить GROUP BY. И узнать правильное явный JOIN синтаксис:

SELECT COUNT(*) AS tot_std 
FROM `student_main` sm JOIN 
    `student_subjects` stds 
    ON stds.`student_id` = sm.`studen. t_id` JOIN 
    `sub_subjects` ss 
    ON stds.`subs_id` = ss.`subs_id` 
WHERE stds.`subs_id` = 1 AND sm.`std_postcode` LIKE '%HA02AN%'; 

Простое правило: Никогда использовать запятые в предложении FROM. * Всегда используйте явный синтаксис JOIN с предложением ON.

+0

Спасибо за ответ. Я написал все свои запросы с помощью простых объединений. Надеюсь, это не проблема? –

+1

@ Ajmal «Простые» объединения эффективно осуждаются с 1992 года. Это почти четверть века назад. Пришло время отказаться от дурной привычки. – Tomalak

+0

Я сниму его с этого момента, но я использовал его во многих местах в своих проектах. Надеюсь, это не проблема. –

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