När man lär sig joina tabeller kan det ibland underlätta om man har en visuell representation av hur en JOIN fungerar på två tabeller. Här är resurser som kan hjälpa med det.
Vanliga JOINS
Normalt sett är det tre vanliga JOINS man jobbar med inledningsvis när man lär sig databaser.
INNER JOIN (visa de rader från tabellerna som matchar villkoret)
LEFT [OUTER] JOIN (visa alla rader i vänstra tabellen samt de rader från högra tabellen som matchar villkoret)
RIGHT [OUTER] JOIN (visa alla rader i högra tabellen samt de rader från vänstra tabellen som matchar villkoret)
LEFT och RIGHT OUTER är alltså samma sak, skillnaden är bara vilken tabell man utgår ifrån och där man vill se alla värden, även de rader som inte matchar villkoret.
Detaljer om vilka varianter av JOIN som stöds i databasen kan studeras i manualen.
FULL OUTER JOIN returnerar ett resultset som inkluderar rader från både vänster och höger tabell.
När det inte finns några matchande rader i den vänstra tabellen, kommer kolumnerna i den högra tabellen att innehålla NULL. På samma sätt, när det inte finns några matchande rader i den högra tabellen, kommer kolumnen i den vänstra tabellen att innehålla NULL.
När man lär sig joina tabeller kan det ibland underlätta om man har en visuell representation av hur en JOIN fungerar på två tabeller. Här är resurser som kan hjälpa med det.
Vanliga JOINS
Normalt sett är det tre vanliga JOINS man jobbar med inledningsvis när man lär sig databaser.
LEFT och RIGHT OUTER är alltså samma sak, skillnaden är bara vilken tabell man utgår ifrån och där man vill se alla värden, även de rader som inte matchar villkoret.
Detaljer om vilka varianter av JOIN som stöds i databasen kan studeras i manualen.
Resurser för JOIN
Exempel på visuell förklaring av JOIN med Venn diagram som visar en logisk relation mellan två mängder.
Fler sätt att utföra JOIN
CROSS JOIN
För alla rader i tabell A, matcha alla rader i tabell B.
Om tabell A har 3 rader och tabell B har 5 rader, kommer resultatet att ha 3 x 5 = 15 rader.
Detta är som en INNER JOIN utan villkor. Lägg till villkoret för att göra det till en INNER JOIN.
NATURAL JOIN
JOINS där kolumnerna har samma namn. Matchning mellan raderna sker baserat på kolumnernas namn. Inget annat villkor används.
FULL OUTER JOIN
FULL OUTER JOIN returnerar ett resultset som inkluderar rader från både vänster och höger tabell.
När det inte finns några matchande rader i den vänstra tabellen, kommer kolumnerna i den högra tabellen att innehålla NULL. På samma sätt, när det inte finns några matchande rader i den högra tabellen, kommer kolumnen i den vänstra tabellen att innehålla NULL.
FULL OUTER JOIN stöds inte i MariaDB eller MySQL men du löser det med två OUTER JOINS som du utför en UNION eller UNION ALL på.
Eller använd UNION ALL för att undvika dubbletter av rader i resultatuppsättningen.