Как объединить два SQL SELECT, где второй возвращает несколько записей? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть три таблицы Assignment , Student и StudentAssignment . В таблице назначений есть два столбца AssignmentID и AssignmentName, а в таблице назначений учащихся - StudentID,AssignmentID. Я пытаюсь написать запрос, который выглядит примерно так:

Select * 
from Assignment 
where AssignmentID = (Select AssignmentID
                      from StudentAssignment 
                      Where StudentId=@studentID)

Я получаю сообщение об ошибке:

Подзапрос вернул более одного значения.

Помогите, пожалуйста, смоделировать запрос.

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Предполагая, что вы пытаетесь вернуть сведения о каждом задании, которое студент сделал, вам нужно использовать IN вместо =:

Select * 
from Assignment 
where AssignmentID IN (Select AssignmentID
                       from StudentAssignment 
                       Where StudentId=@studentID)
1 голос
/ 08 мая 2020

Просто замените = на IN

Select * 
from Assignment a
where AssignmentID in (Select AssignmentID
                      from StudentAssignment s
                      Where s.StudentId=a.studentID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...