Помощь с оператором SQL (JOIN) - PullRequest
8 голосов
/ 11 марта 2010

У меня возникли проблемы с оператором SQL, который должен определить количество студентов, посещающих курс. Мой дизайн базы данных выглядит так:

Таблица Курс: id | COURSE_NAME

Стол Студент: id | Имя

И чтобы связать два отношения «многие ко многим», у меня есть таблица:

Таблица Course_student: id | Course_id | student_id

Я хочу выяснить, сколько студентов посещают курс под названием «Дизайн базы данных». Я знаю, что идентификатор равен «1», но допустим, что я не знал, как будет выглядеть мой оператор SQL?

Я пробовал несколько разных утверждений с разными объединениями, чтобы сначала выбрать правильный идентификатор из таблицы course , где имя "Database Design", а затем я должен искать в моем course_student таблица, где course_id равен основанному идентификатору (в данном случае 1) и где все student_id связаны с этим идентификатором.

Я знаю, что это немного сложное описание, поэтому, пожалуйста, скажите мне, если я должен объяснить это лучше.

Спасибо Mestika

Ответы [ 3 ]

9 голосов
/ 11 марта 2010

Вы можете попробовать что-то вроде

SELECT  COUNT(cs.student_id)
FROM    Course c INNER JOIN
        course_student cs ON c.id = cs.course_id
WHERE   c.course_name = 'Database Design'

Вам не нужно присоединяться к таблице «Студенты», поскольку у вас уже есть идентификатор в таблице course_student, поэтому присоединение на 1 меньше.

0 голосов
/ 11 марта 2010

просто немного другой стиль, но те же результаты

select COUNT(cs.student_id) as counter from Course c, course_student cs where c.id = cs.course_id and c.course_name = 'Database Design'

0 голосов
/ 11 марта 2010
SELECT count(a.id)
FROM Course a
INNER JOIN Course_Student b
ON a.id = b.course_id
WHERE a.course_name = 'Database Design'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...