Vés al contingut

Join (SQL)

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 16:20, 3 set 2019 amb l'última edició de Sergiperis (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.

Una clàusula join SQL , que es correspon amb una operació de join en àlgebra relacional,  combina columnes d'una o més taules d'una base de dades relacional. Crea un conjunt que pot ser guardat com una taula  o ser utilitzat directament. Una JOIN és un mitjà per combinar columnes d'una (self-join) o més taules utilitzant els valors comuns de cadascuna. L'estàndard ANSI-SQL especifica cinc tipus de JOIN: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER i CROSS. Com a cas especial, una taula pot fer  JOIN amb ella mateixa amb un self-join.

Un programador declara una setència JOIN per a identificar files que poden ser unides. Per a cada fila s'avalua el predicat. Si és cert, es genera la fila combinada.

Taules de mostra

Les bases de dades relacionals solen estar normalitzades per eliminar la duplicació de la informació com quan una entitat té una relacio "una-a-moltes" amb una altra. Per exemple, una taula de rutes aèries  contindrà els codis d'aeroport d'origen i destinació, i una taula d'aeroports contindrà la informació detallada de cada aeroport (nom complet, ciutat, coordinades, nombre de pistes, etc). La combinació de la taula de rutes amb la taula d'aeroports permetrà obtenir una altra taula amb els detalls desitjats dels aeroports de cada ruta..

Les explicacions sobre joins utilitzaran les següents dues taules. Les files contingudes en les taules serveixen per a il·lustrar l'efecte dels diferents tipus de join.Tot les explicacions subsegüents damunt uneixen tipus en aquest ús de marca de l'article del següent dues taules. Les files en aquestes taules serveixen per il·lustrar l'efecte de diferents tipus de joins

Taula de Rutes

Identificador_ruta Codi_aerolinia Numero_vol Codi_aeroport_origen Codi_aeroport_destinacio
30 AF AF 427 AMS BCN
31 AF AF 428 AMS BCN
73 HV HV 534 BCN CPH
88 HV HV 194 BER CPH
162 EI EI 183 CDG CPH
192 HV HV 104 CPH BER
193 VY VY 106 CPH DUB
212 VY VY 306 DUB BCN
214 EI EI 303 DUB CPH

Taula d'aeroports

Codi_aeroport Nom_Aeroport Ciutat
AMS Amsterdam Airport Schiphol Amsterdam
ARN Stockholm Arlanda Airport Stockholm
BCN Barcelona El Prat Airport Barcelona
BER Berlin Brandenburg Airport Berlin
CDG Paris Charles de Gaulle Airport Paris
CPH Copenhagen Airport Copenhagen
FCO Rome Fiumicino Airport Rome
LHR London Heathrow Airport London

A les taules anteriors es pot veure quel'aerport de Dublin (DUB) te rutes pero no esta inclos a la taula d'aeroports. En canvi els aeroports de Arlanda (ARN) i Roma (FCM) no tenen rutes definides a la taula de rutes. Aquests detalls seran importants al descriure les diferents joins.