Verschil tussen Inner Join en Outer Join

Verschil tussen Inner Join en Outer Join
Verschil tussen Inner Join en Outer Join

Video: Verschil tussen Inner Join en Outer Join

Video: Verschil tussen Inner Join en Outer Join
Video: BRD vs SRS - Business Analysis Concepts - Techcanvass 2024, November
Anonim

Inner Join vs Outer Join

Inner join en Outer join zijn twee van de SQL-verbindingsmethoden die worden gebruikt bij het verwerken van query's voor databases. Ze behoren tot de familie van join-clausules (de andere twee zijn Left en Right Joins). Er is echter een Self Join die voor gespecialiseerde situaties kan worden gebruikt. Het doel van Join is om velden te combineren met behulp van de gemeenschappelijke waarden voor de twee tabellen. Deze joins combineren records uit meerdere tabellen in een database. Het creëert resulterende sets, die kunnen worden opgeslagen als een andere tabel.

Wat is Inner Join?

De meest gebruikte SQL Join-bewerking is de Inner Join. Het kan worden beschouwd als het standaard type join dat in toepassingen wordt gebruikt. Inner join gebruik het join-predicaat om twee tabellen te combineren. Ervan uitgaande dat de twee tabellen A en B zijn, zal het join-predikaat de rijen van A en B vergelijken om alle paren te vinden die aan het predikaat voldoen. Kolomwaarden van alle tevreden rijen van A- en B-tabellen worden gecombineerd om het resultaat te creëren. Het kan worden gezien als eerst de cross join (Cartesiaans product) van alle records nemen en vervolgens alleen de records retourneren die voldoen aan het join-predicaat. In werkelijkheid wordt het Cartesiaanse product echter niet berekend omdat het erg inefficiënt is. In plaats daarvan wordt hash-join of sort-merge-join gebruikt.

Wat is Outer Join?

In tegenstelling tot Inner join, houdt outer join alle records bij, zelfs als er geen overeenkomende record kan worden gevonden. Dat betekent dat outer join wel een record nodig heeft om een overeenkomend record te vinden om in het resultaat te verschijnen. In plaats daarvan worden alle records geretourneerd, maar niet-overeenkomende records hebben null-waarden. Outer joins zijn onderverdeeld in drie subcategorieën. Dit zijn de linker buitenste voeg, de rechter buitenste voeg en de volledige buitenste voeg. Deze differentiatie is gebaseerd op de rij van de tabel (linkertabel, rechtertabel of beide tabellen) die wordt behouden wanneer niet-overeenkomende records worden gevonden. Left outer joins (ook wel gewoon left join genoemd) behoudt alle records van de linkertabel. Dat betekent dat, zelfs als het aantal overeenkomende records nul is, het nog steeds records in de resultatentabel zal hebben, maar null-waarden zal hebben voor alle kolommen van B. Met andere woorden, alle waarden uit de linkertabel worden geretourneerd met overeenkomende waarden van rechts tabel (of null-waarden als ze niet overeenkomen). Als waarden uit meerdere rijen uit de linkertabel overeenkomen met een enkele rij uit de rechtertabel, wordt de rij uit de rechtertabel indien nodig herhaald. De rechter outer join lijkt veel op de left outer join, maar de behandeling van tabellen wordt vereerd. Dat betekent dat het resultaat alle rijen van de rechtertabel minstens één keer zal bevatten met overeenkomende linkertabelwaarden (en null-waarden voor niet-overeenkomende rechterwaarden). Een volledige outer join is uitgebreider dan zowel de linker als de rechter outer join. Het resulteert in het combineren van het effect van het toepassen van zowel de linker als de rechter buitenste samengevoegd.

Wat is het verschil tussen Inner Join en Outer Join?

Inner Join houdt de niet-overeenkomende rijen niet in het resultaat, maar outer join behoudt alle records van ten minste één tabel (afhankelijk van welke outer join is gebruikt). Het gedrag dat er geen informatie aanwezig is op niet-overeenkomende rijen in de resultatentabel is dus ongewenst, u moet altijd een van de outer joins gebruiken (in plaats van inner join). Inner join levert mogelijk geen resultaat op als er geen overeenkomsten worden gevonden. Maar outer join zal altijd een resulterende tabel produceren, zelfs zonder overeenkomende rijen. Inner join retourneert altijd tabellen met waarden (indien geretourneerd). Maar outer joins kunnen resulteren in tabellen met null-waarden.

Aanbevolen: