Чисто для вашего понимания напишу рандомные таблицы:
(lesson) (teacher)
id|name id|name
1 |Математика 1 |Дудина П.П.
2 |Русский 2 |Липова З.З.
3 |Физика 3 |Дроздова К.К.
(lesson_teacher)
id|lesson_id|teacher_id
1 | 1 | 1
2 | 2 | NULL
3 | 3 | 3
SELECT * FROM lesson_teacher
INNER JOIN lesson ON lesson_teacher.lesson_id = lesson.id
INNER JOIN teacher ON lesson_teacher.teacher_id = teacher.id
WHERE lesson.name = "Русский"
По этому примеру мне нужно вывести всю строку, где lesson.name = "Русский" (2), но тут не выводит ничего. Я конечно понимаю что ничего не выводит из-за установки "INNER JOIN teacher" и указания условия "lesson_teacher.teacher_id = teacher.id", но мне после получения этой выборки нужно вывести этого преподавателя, а без INNER JOIN это не получится сделать, я думал может как-то через IF сделать?
Так как у этой записи в качестве ссылки на учителя стоит NULL, то и выводить нечего. Если необходимо вывести всю строку, с отсутствующим значением, то необходимо переписать код запроса под LEFT JOIN
. Например так:
SELECT * FROM lesson_teacher
LEFT JOIN lesson ON
lesson_teacher.lesson_id = lesson.id
LEFT JOIN teacher ON
lesson_teacher.teacher_id = teacher.id
WHERE lesson.name = "Русский"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не хочу сделать на сайте для пользователей файловую систему папка+файл например пользователь создал папку "home" в ней папка "user" и так далее...
Стоит задача создать магазин с разными предметамиЯ решил каждому предмету давать уникальный ID и если человек купил что либо то записывать...
Обязательно ли при указании типа параметра функции или хранимой процедуры указывать длину? Например, есть хранимая процедура:
Здравствуйте, перенес таблицу на heroku таблица в utf-8Всё отображается нормально, но если сделать новую запись, русские символы отображаются...