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.
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
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
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
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
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.