De JOIN- statement in MySQL wordt gebruikt om gegevens van twee of meer tabellen combineren tot een gemeenschappelijke set . De tabellen worden gecombineerd door een gemeenschappelijke kolom in elke tabel . De kolommen hoeft dezelfde naam hebben , maar ze moeten hetzelfde gegevenstype bevatten . MySQL voldoet aan de meeste , maar niet alle , van de standaard SQL randvoorwaarden joins . Sluit zich aan kan worden gebruikt in SELECT , UPDATE en DELETE . Dit artikel zal zich richten op de SELECT-instructie . Inner joins De volgende tabellen worden gebruikt om elk van de joins te illustreren : addressfname lname staddress zipKris Miller 301 Anywhere St 17598Steve Fetterhoff 305 St. Elsewhere Ave 17989James Smith 623 Kensington Ct 98.539 zipcity staat zipLancaster PA 17598Wiconisco PA 17989Orange CA 98539 Binnen sluit zich combineren de waarden van twee tafels en ze te combineren om de resultaten te produceren . . Zij keren alleen de records die voldoen aan de join eisen , en niemand die dat niet doen Kruis sluit zich nemen elke rij van de ene tafel en sluit het aan elke rij van de tweede tabel met de syntax : SELECT * FROM adres , postcode ; U kunt de komma vervangen in het bovenstaande voorbeeld , met het trefwoord JOIN SELECT * FROM adres JOIN zip ; . Deze uitspraken leidt tot de volgende resultaten : | Kris | Miller | 301 Anywhere St | 17598 | Lancaster | PA | | | Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Lancaster | PA 17598 | 17598 | | James | Smith | 623 Kensington Ct | 98539 | Lancaster | PA | 17598 | | Kris | Miller | 301 Anywhere St | 17598 | Wiconisco | PA | 17989 | < br > | Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Wiconisco | PA | 17989 | | James | Smith | 623 Kensington Ct | 98539 | Wiconisco | PA | 17989 | | Kris | Miller | 301 Anywhere St | 17598 | Oranje | CA | | | Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Oranje | CA | 98539 | | James | Smith | 623 Kensington Ct | 98539 | Oranje | CA | 98539 | Voor deze twee tabellen , de resultaten zijn niet echt behulpzaam . Ze tonen gewoon een combinatie van de twee tabellen in een enkele tabel . Een Equi lid worden of Regelmatige Word is een kruis te sluiten met een restrictieve WHERE . SELECT fname , lname , staddress , stad , staat , zip.zip FROM adres , postcode WAAR address.zip = zip.zip ; of met behulp van het trefwoord JOIN , zoals : SELECT address.fname , address.lname , adres . staddress , zip.city , zip.state , zip.zip FROM adres JOIN zip OP address.zip = zip.zip ; . Dit toetreden retourneert de adressen , en de exacte syntaxis zorgt voor een correct geformatteerd mailinglijst < br > | Kris | Miller | 301 Anywhere St | Lancaster | PA | 17598 | | Steve | Fetterhoff | 305 St. Elsewhere Ave | Wiconisco | PA | 17989 | | James | Smith | 623 Kensington Ct | Oranje | CA | 98539 | de notatie " zip.zip " zegt om de postcode te gebruiken uit het zip- tafel . Deze notatie kunt u precies bepalen welke kolommen moeten worden teruggegeven . Als de naam van de kolom niet wordt herhaald in beide tabellen , hoeft u niet naar de " table.column " notatie gebruiken , maar als het wordt herhaald , moet u opgeven welke tafel te gebruiken . U kunt ook deze verklaring van het gebruik van de mET -clausule . Voor het GEBRUIK clausule om te werken , moet elke tabel een gemeenschappelijke kolom bevatten ( in dit voorbeeld de gemeenschappelijke kolom ' zip ' zou zijn ) . De herziene verklaring zou zijn : SELECT fname , lname , staddress , stad, staat , zip.zip FROM adres WORD zip GEBRUIK zip ; Outer joins Outer joins combineren twee of meer tabellen , maar ze vereisen niet dat de gekoppelde tabellen bevatten overeenkomende records . Met andere woorden , afhankelijk van het type van de join die is aangevraagd , kan er een rij of rijen met NULL waarden in de kolommen data voor een van de tafels . Outer joins kunnen zowel links of rechts sluit zich Om voorbeelden voor deze sectie de volgende record wordt toegevoegd aan het adres tafel : . Pam Kasper 501 W 69 St 80907 < br > En , de volgende record wordt toegevoegd aan het zip tabel : New York NY 50647 Een links join retourneert alle records die overeenkomen met de zoekopdracht plus de ongeëvenaarde records in de linker tabel van de join SELECT fname , lname , staddress , stad, staat , zip.zip FROM adres LEFT JOIN zip GEBRUIK ( zip ) ; het resultaat zou zijn : . Kris | Miller | 301 Anywhere St | Lancaster | PA | 17598 | | Steve | Fetterhoff | 305 St. Elsewhere Ave | Wiconisco | PA | 17989 | | James | Smith | 623 Kensington Ct | Oranje | CA | 98539 | | Pam | Kasper | 501 W 69th St | NULL | NULL | NULL Zoals je kunt zien , alle records uit de linker tabel ( adres ) worden geretourneerd , met NULL-waarden voor de ontbrekende records uit de juiste tabel . een recht join is het tegenovergestelde van een LEFT JOIN . SELECT fname , lname , staddress , stad , staat , zip.zip FROM adres RIGHT JOIN zip GEBRUIK ( zip ) ; | Kris | Miller | 301 Anywhere St | Lancaster | PA | | | Steve | Fetterhoff | 305 St. 17598 elders Ave | Wiconisco | PA | 17989 | | James | Smith | 623 Kensington Ct | Oranje | CA | 98539 | | NULL | NULL | NULL | New York | New York | 50647 |
|