В вашем случае у вас есть все внутренние объединения, поэтому он будет возвращать результаты, когда обе / все таблицы удовлетворяют их критериям (в пункте).
Просмотр ваших данных ваш ученик 1 => Али имеет отношение со степенью1 => БС Информационные технологии.Кроме того, в степени 1 есть курсы (1 => Программирование, 2 => Английский, 5 => Математика, 6 => Электроника)
Так что для студента 1 ваше предложение внутреннего объединения работает, поскольку оно содержит данные во всех объединенных таблицах.
Теперь, если мы ищем вашего студента 3 => Билал, который имеет отношение со степенью 3 => BS по математике, но у этой степени нет назначенных курсов, поэтому ваш студент Билал не возвращается
Чтобы получить все студенты независимо от того, есть ли у них соответствующие курсы, вы можете превратить свои внутренние объединения в левое объединение не для всех таблиц, а для tblcoursedegreerelation
и tblcourse
SELECT *
FROM tblstudent s
INNER JOIN tbldegree d ON d.d_id = s.d_id
LEFT JOIN tblcoursedegreerelation cdr ON d.d_id = cdr.d_id
LEFT JOIN tblcourse c ON cdr.c_id = c.c_id
ORDER BY cdr.cdr_id DESC
Демо
В наборе результатов вы можете видеть следующие столбцы как нулевые из-за отсутствия связи с курсами
cdr_id, c_id, d_id, c_id, c_name, c_credit