A rotating globe. A rotating globe.

SQL JOINS

Alla JOINS skapar en ny tabell som innehåller alla kolumner från både den första och den andra tabellen. Det som skiljer JOINS är vilka rader som tas med.

JOIN/CROSS JOIN.

Alla möjliga kombinationer

Om vi vill se vilka studenter som går vilka kurser

SELECT * FROM students
JOIN courses

Kommer inte matchas, enbart lägga ihop vilka möjliga kombinationer det finns

Vilka studenter som skulle kunna gå en viss kurs

INNER JOIN.
ON
SELECT * FROM students
JOIN courses
ON students.course_id = courses.course_id

Bara de rader när kursens ID finns både på studentens rad samt kursens rad

Inner join.
SELECT * FROM students
LEFT JOIN courses
ON students.course_id = courses.course_id

Vi får tillbaka alla studenter, även om de inte går någon kurs

Vi har sagt att den första (left) ska hållas intakt, den andra (right) får sållas

More joins.
SELECT * FROM students
RIGHT JOIN courses
ON students.course_id = courses.course_id

Vi får tillbaka samtliga kurser, även om inte det finns någon elev bunden till kursen.

Rader som inte matchar blir NULL

left join.

Tänk på

Ibland är det enklare att göra två separata queries

Viss sortering kan ske i PHP

Testa först i PHPMyAdmin om querien ens funkar innan du använder den i PHP

Använder du header("Location: /") så redirectas du innan du hinner se felmeddelande, redirect ska ske när du vet att allting fungerar.