LEFT JOIN

LEFT JOIN

LEFT JOIN оставляет только записи, у которых есть ключ в левой таблице. Это значит, что если мы всегда оставляем значения из левой таблицы, даже если для них не нашлось пересечения. 

Рассмотрим данный способ соединения на наших учениках из шага №1:

select
   sc.student_id,
   st.student,
   sc.subject,
   sc.score
from
   score_table as sc
left join
   student_table as st on st.student_id = sc.student_id

student_id

subject

score

student 

1

SQL

5

Александр

2

Математика

4

Влад

3

Физ-ра

5

Сергей 

4

Математика 

3

Полина

5

SQL

3

Ксения

7

Английский 

2

null

В этом примере мы видим, что при помощи LEFT JOIN мы оставили все записи для левой таблицы (таблицы с оценками), но, поскольку студента c student_id = 7 нет в списке имен учеников, в финальный результат вернется пустое значение.

RIGHT JOIN

RIGHT JOIN работает абсолютно также, только теперь для правой таблицы.

select
   st.student_id,
   st.student,
   sc.subject,
   sc.score
from
   score_table as sc
right join
   student_table as st on st.student_id = sc.student_id

student_id

subject

score

student 

1

SQL

5

Александр

2

Математика

4

Влад

3

Физ-ра

5

Сергей 

4

Математика 

3

Полина

5

SQL

3

Ксения

6

null

null

Алексей

Поскольку в таблице с учениками есть только ученики с student_id от 1 до 6, то значения вернутся только для этих student_id.

На самом деле RIGHT JOIN очень редко используется, потому что его легко заменить LEFT JOIN, нужно просто поменять местами последовательность таблиц.