Запрос не возвращает NULL

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Что-то не понимаю, что делаю не так. Есть таблицы SUBJECTS, SUBJECTS_ON_GROUPS

Задача:
Посмотреть какие предметы установлены каким группам, если предмет не установлен, вывести "-"

Код:
SELECT SUBJECTS.NAME, SUBJECTS_ON_GROUPS.GROUP_ID
FROM SUBJECTS
JOIN SUBJECTS_ON_GROUPS ON SUBJECTS_ON_GROUPS.SUBJECT_ID = SUBJECTS.ID
Этот запрос выводит только предметы которые установлены, а как получить что предмет не установлен в рамках запроса?

Скажем есть предмет А в таблице SUBJECTS, в SUBJECTS_ON_GROUPS для него строк нет. Как вывести в результате

SUBJECT | GROUP_ID
A | NULL
 
В одном запросе сделать не получится, тебе нужно 2 запроса (если решать чисто в рамках SQL), второй из которых LEFT JOIN Для просмотра ссылки Войди или Зарегистрируйся
 
В одном запросе сделать не получится, тебе нужно 2 запроса (если решать чисто в рамках SQL), второй из которых LEFT JOIN Для просмотра ссылки Войди или Зарегистрируйся
2 запроса ты имеешь в виду select from + left join?

С join и проблемы у меня, не возвращает NULL, можешь подсказать как его сделать?
 
2 запроса ты имеешь в виду select from + left join?
С join и проблемы у меня, не возвращает NULL, можешь подсказать как его сделать?

Код:
SELECT subjects.name,subjects_on_groups.subject_id FROM subjects LEFT JOIN subjects_on_groups ON subjects.id = subjects_on_groups.subject_id;

upload_2019-10-9_16-17-56.png
 
Код:
SELECT subjects.name,subjects_on_groups.subject_id FROM subjects LEFT JOIN subjects_on_groups ON subjects.id = subjects_on_groups.subject_id;

Посмотреть вложение 105953
Возможно не так объясняю
Для просмотра ссылки Войди или Зарегистрируйся

В таблице для группы 101 не установлен предмет физика, надо чтобы результат запроса это показал как-то
 

Вложения

  • data.zip
    1.012 байт · Просмотры: 3
Я думаю без пыхи это уже будет какое то сложное решение через процедуры, т.к. SQL не может знать что тебе нужно взять каждый элемент первой таблицы и прокручивать его по наличию второго, причем если второго нету - то писать нулл.
Вынеси логику в обработчик и всё.
 
Можно попробовать с помощью оператора UNION сделать такую выборку
 
Назад
Сверху