Как реализовать объединение SQL для нескольких ключей для двух таблиц с помощью оператора where? - PullRequest
0 голосов
/ 31 января 2020

Мне интересно найти численность студентов 1-й недели осени 2018 года для факультета бизнеса по полу, используя следующие две таблицы. Здесь ID - это первичный ключ или часть первичного ключа для каждой из таблиц данных. В таблице планов программа представляет собой студенческий колледж (в нашем случае «Бизнес»), пол имеет значения M, а F, TERM имеет значения «Осень», «Весна» и «Лето», значения «Сессии» имеют значения. , "1-я неделя" и "2-я неделя". Мне было интересно, если вы могли бы проверить мой код. Я новичок в SQL! Я искренне ценю ваше время.

enter image description here

Мой SQL код:

SELECT count(Student.ID) as COUNT, Student.Sex as Sex
FROM Student JOIN Plan
on Student.ID=Plan.ID
WHERE Student.Term="Fall"
AND Student.Sessions="1st Week"
AND Plan.Program="Business"
GROUP BY Student.Sex;

Ответы [ 2 ]

1 голос
/ 31 января 2020

Ответ на этот вопрос зависит от того, является ли столбец идентификатора в таблице плана идентификатором студента, что, как я полагаю, не является. В таблице плана должна быть запись для каждой комбинации сессий ученика, чтобы учесть, что один и тот же ученик проводит разные сессии. Смотрите: отношения один ко многим. Оттуда вы сможете выполнить этот запрос после группировки по всем полям, упомянутым в предложении select.

0 голосов
/ 31 января 2020

В любом случае, я создал для вас ссылку на скрипку:

https://www.db-fiddle.com/f/7G2DwLB6SNqbAtKeD96nWG/1

И я могу сделать вывод, что на основании заданного вами условия запроса верно. Но, как и в случае с @Benny, поле ID обычно ссылается на данные таблиц ID. Например, ID в Student - это идентификатор студента, в то время как в Plan вполне возможно, что это ID для каждого плана. Но вы сказали, что он идентичен И в таблице Plan нет столбца student_id, поэтому все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...