СОЕДИНЕНИЕ трех таблиц с помощью Distinct Query - SQL - PullRequest
0 голосов
/ 19 июня 2020

У меня есть три таблицы, как показано ниже

Subjects

SubID(pk)  IntrvlID   SubjectName

sub1        1         English
sub2        1         English
sub3        3         Chinese
sub4        4         Spanish

StudentVsSubject

StudentID   SubID   
AAAA        sub1      
AAAA        sub2      
AAAA        sub3      
BBBB        sub3       
AAAA        sub4       

SubmissionDetails

SubmissionID  StudentID    SubID     IntrvlID   SubmittedAt
100            AAAA        sub1       1          19/06/2020
101            AAAA        sub3       3          17/06/2020

И результат должен быть (студента AAAA)

  IntrvlID     StudentID    SubID       SubmittedAt
     1           AAAA        sub1          19/06/2020  
     3           AAAA        sub3          17/06/2020
     4           AAAA        NULL           NULL

Если SubmissionDetails пуст, результат должен быть (студента AAAA)

   IntrvlID     StudentID    SubID       SubmittedAt
     1           AAAA        NULL          NULL  
     3           AAAA        NULL          NULL
     4           AAAA        NULL          NULL

Значит, сначала я должен получить DISTINCT 'IntrvlID' назначен студенту «AAA» и должен присоединиться к этим трем столам.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Пожалуйста, используйте запрос ниже,

select distinct sd.IntrvlID, s.StudentID, sd.SubID, sd.SubmittedAt from 
SubmissionDetails sd
left outer join StudentVsSubject ss
on (sd.StudentID=ss.StudentID)
left outer join Subjects s
on (s.IntrvlID = sd.IntrvlID);
0 голосов
/ 19 июня 2020

Вы можете сделать left join, как показано ниже

select
    distinct IntrvlID,
    ss.StudentID,
    s.SubId,
    SubmittedAt
from Subject s
left join StudentVsSubject ss
on s.SubId = ss.SubId
left join SubmissionDetails sd
on ss.StudentID = sd.StudentID
...