SQL Server: получить все данные из одной таблицы, но условие для столбца 2-й таблицы - PullRequest
2 голосов
/ 31 октября 2019

У меня есть 3 таблицы Student, Classes и StudentClasses.

Студент Таблица:

enter image description here

Классы таблица:

enter image description here

StudentClasses таблица:

enter image description here

Я пытаюсь получить

select 
    c.ClassID, sc.StudentID, Title, 
    ClassFrom as ClassDate, ClassTo as ClassTime,
    Duration, Type as SessionType, sc.Status as StatusJoin
from 
    Classes c 
left join 
    StudentClasses sc on sc.ClassID = c.ClassID 
where 
    sc.StudentID = '66919287-d63d-4b30-931f-30532b68c2f1' or 
    sc.StudentID IS NULL

Возвращает:

enter image description here

Что правильно, я думаю, но когда я изменяю его на:

where sc.StudentID = '5a22f025-ae64-49b8-9782-32bc2f1ccef6'

, это возвращает:

enter image description here

Этодолжен вернуть все 4 класса с studentID и датой присоединения null

Вот вопрос: я хочу, чтобы здесь были все классы, а не некоторые присоединения учащихся, или нет, если присоединения, то должны быть Studentid и JoiningDate, в противном случае эти столбцы могут бытьнуль

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

используйте ваше условие в предложении ON вместо Where

 select c.ClassID,sc.StudentID,Title,ClassFrom as ClassDate,ClassTo as 
       ClassTime,Duration,Type as SessionType,sc.Status as StatusJoin
       from Classes c 
       left join StudentClasses sc on sc.ClassID = c.ClassID 
       and (sc.StudentID = '66919287-d63d-4b30-931f-30532b68c2f1' or 
       sc.StudentID IS NULL)
0 голосов
/ 31 октября 2019

выберите c.ClassID, sc.StudentID, Title, ClassFrom в качестве ClassDate, ClassTo в качестве ClassTime, Duration, Type в качестве SessionType, sc.Status в качестве StatusJoin из классов c левым соединением StudentClasses sc на sc.ClassID = c.ClassID

Также поможет !!!

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