2015-09-29 2 views
-1

Я попытался найти аналогичный вопрос, но никакой ответ мне не помог. У меня 3 таблицы. student, course и student_has_course (для многих).MySQL: Как найти счетчик для столбца с объединенной таблицей manytomany

Студенты проходят курсы и проходят курсы на двух разных языках. Скажите английский и испанский. Я хочу найти количество студентов для каждого языка. Например: я хочу найти, сколько студентов принимает курс на английском языке. Я не могу понять, как это найти.

EDIT:

стол student: ID, NAME
стол course: ID, LANGUAGE
стол student_has_course: COURSE_ID, STUDENT_ID

Допустим, есть 10 курсов в общей сложности, которые 5 в английском и 5 на испанском языке. Скажем, всего 100 студентов. 70 из них берут курс на английском и 30 из них проходят курс испанского языка. Как я нашел число 70 для студентов, обучающихся по английскому языку?

ответ

1

Вы не дает нам много отрабатывать, так предполагая схему, попробуйте следующее:

SELECT 
    c.language, 
    COUNT(*) 
FROM 
    course AS c 
INNER JOIN student_has_course AS shc ON shc.course_id = c.id 
GROUP BY 
    c.language; 

Если все, что вы хотите, английский

SELECT 
    count(*) 
FROM 
    course AS c 
INNER JOIN student_has_course AS shc ON shc.course_id = c.id 
WHERE 
    c.language = 'English'; 
+0

Майк, спасибо за ваш ответ, но Я получаю неправильный результат с этим запросом. И не должно быть что-то вроде; 'WHERE c.language = 'Английский' в этом запросе, чтобы найти количество студентов на английских курсах? – oxyt

+0

Что не так с результатами? Вы не опубликовали схему, поэтому мне пришлось угадать, как связаны эти таблицы. Вы можете добавить предложение where, если все, что вам нужно, это английский, мой запрос просто дает вам счет против всех языков. –

+0

Майк, ваш запрос работает нормально, но это не то, что я искал. Я редактировал вопрос. – oxyt

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