Member 12763917 Ответов: 2

Множественный запрос как к нему присоединиться


у меня есть 2 стола, но я хочу объединить их вместе. как это сделать

выберите classSchedule.[classScheduleId ] из classSchedule

classScheduleId
------------
1000
1001
1002

выберите classSchedule.classScheduleId ,граф(посещаемости.studentId), как и присутствовать там, где посещаемость.classScheduleId=classSchedule.группа classScheduleId по(classSchedule.classScheduleId )

classScheduleId | участие
--------------------------
1001 | 2


но то, что я ожидаю, это

classScheduleId | участие
--------------------------
1000 | 0
1001 | 2
1002 | 0

Что я уже пробовал:

В этом случае я не знаю как это сделать так что я просто пытаюсь найти какой то пример чтобы решить эту проблему но до сих пор я также не знаю ключевое слово которое я хочу найти

2 Ответов

Рейтинг:
19

OriginalGriff

Вам нужна группа ПО и левое соединение
Попробуй:

SELECT s.classScheduleID, COUNT(a.classScheduleId) FROM classSchedule s
LEFT JOIN Attendance a ON a.classScheduleId = s.classScheduleID
GROUP BY s.classScheduleId


Member 12763917

Большое спасибо

Рейтинг:
0

Peter Leow

Вам нужно будет использовать либо левое соединение, либо правое соединение в зависимости от порядка ваших таблиц в операторе sql, проверьте это: Ключевое слово SQL LEFT JOIN[^]. Некоторые поля будут нулевыми, если нет совпадающих записей. Как и в вашем случае, это будет:
classScheduleId | участие
--------------------------
1000 / NULL
1001 | 2
1002 / NULL
Вы можете преобразовать NULL в 0 с помощью Функция isnull()[^- если хочешь.
Однако это даст читателям неверную информацию. Если посещаемость действительно равна 0, то она должна быть явно вставлена в таблицу посещаемости. NULL означает, что данные еще не доступны, подразумевая, что эти занятия не проводились, тогда как 0 посещений означает, что участники не пришли на эти занятия.