У меня есть этот код и его временные таблицы, чтобы вы могли его запустить.
create table #student
(
id int identity(1,1),
firstname varchar(50),
lastname varchar(50)
)
create table #quiz
(
id int identity(1,1),
quiz_name varchar(50)
)
create table #quiz_details
(
id int identity(1,1),
quiz_id int,
student_id int
)
insert into #student(firstname, lastname)
values ('LeBron', 'James'), ('Stephen', 'Curry')
insert into #quiz(quiz_name)
values('NBA 50 Greatest Player Quiz'), ('NBA Top 10 3 point shooters')
insert into #quiz_details(quiz_id, student_id)
values (1, 2), (2, 1)
drop table #student
drop table #quiz
drop table #quiz_details
Так как вы можете видеть, что lebron james берет викторину nba top 10 3-х точечных стрелков, а stephen curry берет самую большую викторину игрока nba 50.
Все, что я хочу, это получить то, чего они еще не взяли, например, LeBron не взял 50 лучших викторинов игроков, поэтому я хочу, чтобы это было так.
id quiz_name firstname lastname
----------------------------------------------------
1 NBA 50 Greatest Player Quiz NULL NULL
Я хочу 2 параметра, идентификатор lebron и идентификатор викторины, чтобы я знал, что lebron или stephen еще не приняли его, но как бы это сделать, если значение student_id
все равно null?
Моя попытка:
select
QD.id,
Q.quiz_name,
S.firstname,
S.lastname
from
#quiz_details QD
inner join
#quiz Q on Q.id = QD.quiz_id
inner join
#student S on S.id = QD.student_id