Оставьте таблицу присоединения при условии, которое может быть нулевым, и объедините пустые столбцы, если условие равно нулю. - PullRequest
1 голос
/ 23 апреля 2019

У меня есть таблица assignment, которая содержит задания, созданные учителем в определенном классе.

Таблица assignment имеет следующие поля:

idAssignment (primary key), 
classId (foreign key), 
title, 
assignmentDesc, 
dateDue

У меня также есть таблица assignmentsubmissions, в которую учащиеся этого класса загружают свои задания в задание.

Таблица assignmentsubmission имеет следующие поля:

assignmentSubmissionId (primary key), 
assignmentId (foreign key), 
userId (foreign key), 
submission

По сути, я хочу присоединиться assignmentsubmission к assignment для ученика в определенном классе, чтобы увидеть задания, которые он выполнил и не выполнил.

Я пробовал несколько разных методов, но это моя текущая команда SQL:

SELECT * 
FROM assignment 
  LEFT JOIN assignmentsubmission 
    ON assignment.idAssignment = assignmentsubmission.assignmentId 
WHERE classId = 1234 
    AND ((userId = 1) OR (userId IS NULL))

Студент, возможно, еще не загрузил заявку на конкретное задание, поэтому в этом случае userId не будет существовать для этого assignment, и я хочу объединить null строки для assignmentsubmission. В существующем состоянии все, что происходит, - это только отображенные отправленные назначения, но я хочу, чтобы все назначения были возвращены с полями отправки или пустыми данными.

Я действительно борюсь с этой проблемой, поэтому любая помощь будет принята с благодарностью, спасибо.

1 Ответ

0 голосов
/ 23 апреля 2019

Вы на правильном пути, но сравнение со студентом должно быть в предложении ON:

SELECT a.*, (asu.userId IS NOT NULL) as completed_flag
FROM assignment a LEFT JOIN
     assignmentsubmission asu
     ON a.idAssignment = asu.assignmentId AND
        asu.userId = 1
WHERE a.classId = 1234 ;

В этой версии представлены псевдонимы таблиц, которые облегчают написание и чтение запроса. Обратите внимание, что все ссылки на столбцы квалифицированы - это означает, что таблица происхождения идентифицирована.

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