Я хочу назначить одному-трем людям тему.Затем я хочу получить задание для определенного предмета.
У меня есть одна таблица SUBJECTS, в которой есть дюжина предметов (столбцы: id (PK), name).У меня есть одна таблица USERS, в которой есть дюжина пользователей (столбцы: id (PK), firstName, lastName и т. Д.)
Затем я создал таблицу AS_SUBJECTS, в которой есть следующие столбцы (все из которыхявляются целыми числами):
id(PK), subjectName, user1, user2, user3
Отношения:
- subjectName - FK для subjects.id
- user1 - FK для users.id
- user2 - это FK для users.id
- user3 - это FK для users.id
Я хочу, чтобы user2 и user3 были необязательными, т. е. может быть назначен один, два или три человека.один предмет.Поэтому я допустил NULL на этих столбцах.
Теперь предположим, что я ввожу эти значения в AS_SUBJECTS:
id = 1
subjectName = 1
user1 = 7
user2 = NULL
user3 = NULL
Если я сделаю запрос: SELECT * FROM as_subjects WHERE as_subjects.subjectName = 1;
, я получу результаты для всех столбцов, включая столбцы со значениями NULL.
Проблема: мне нужно запросить тему в AS_SUBJECTS, а также получить users.firstName и users.lastName для каждого пользователя, назначенного этому предмету.Поэтому я использую псевдонимы:
SELECT
as_subjects.subjectName
as_subjects.user1
u1.firstName as user1FirstName
u1.lastName as user1LastName
as_subjects.user2
u2.firstName as user2FirstName
u2.lastName as user2LastName
as_subjects.user3
u3.firstName as user3FirstName
u3.lastName as user3LastName
FROM as_subjects
JOIN subjects ON as_subjects.subjectName = subjects.id
JOIN users u1 ON as_subjects.user1 = users.id
JOIN users u2 ON as_subjects.user2 = users.id
JOIN users u3 ON as_subjects.user3 = users.id
WHERE as_subjects.subjectName = 1;
Запрос действителен, но когда as_subjects.user2 или 3 имеет значение NULL, набор пуст, данных вообще нет.
Есть какие-либо материалы о том, как этого добиться?Все, что я мог найти, это сообщения о том, как выбрать столбцы, где значения NULL.Что мне нужно, это выбрать столбцы NO MATTER, если значение равно NULL.