Left, Right och Inner Joins
Nätbutiken har beställt fler produkter från en leverantör eftersom de hade lågt lager. Detta innebär att vi har lite ledig tid tills leveransen anländer.
Låt oss använda denna möjlighet för att lära oss något nytt! Hittills har du använt standard JOIN
i SQL, men det finns andra typer av joins du kan använda.
Här är de 4 huvudtyperna av tabelljoins:
INNER JOIN
: Returnerar rader med matchande värden i båda tabellerna. Detta är samma som den standard JOIN du har använt;
LEFT JOIN
: Returnerar alla rader från den vänstra tabellen och de matchande raderna från den högra tabellen. Om det inte finns några matchningar returnerar denNULL
för den högra tabellen;
RIGHT JOIN
: Returnerar alla rader från den högra tabellen och de matchande raderna från den vänstra tabellen. Om det inte finns några matchningar returnerar denNULL
för den vänstra tabellen;
FULL JOIN
: Returnerar alla rader när det finns en matchning i en av tabellerna. Om det inte finns några matchningar returnerar denNULL
för de saknade värdena i den andra tabellen.
Innan vi dyker in i att använda dessa joins, låt oss kolla på de två tabellerna vi kommer att arbeta med. De innehåller detaljer om kurser och de studenter som är inskrivna i dem.
courses
:
enrollments
:
Syntaxen för att använda dessa typer av joins är faktiskt enkel. Istället för det bekanta JOIN
eller INNER JOIN
, specificera bara LEFT JOIN
eller någon annan typ av JOIN
:
sql
Swipe to start coding
Skriv en fråga för att hämta en lista över alla kurser och de studenter som är inskrivna, inklusive kurser utan registrerade studenter.
Du behöver hämta följande kolumner i denna ordning:
bash
Använd den lämpliga typen av JOIN
för att lösa denna uppgift!
Kortfattade instruktioner
- Hämta kolumnerna
courses.course_id
,courses.course_name
,courses.description
,enrollments.student_name
, ochenrollments.enrollment_date
fråncourses
tabellen. - Använd en LEFT JOIN för att ansluta
enrollments
tabellen. - Den gemensamma kolumnen för båda tabellerna är
courses.course_id = enrollments.course_id
.
Lösning
Tack för dina kommentarer!