SQL ārējā pievienošanās

Sql Areja Pievienosanas



Pats par sevi saprotams, ka pievienošanās ir viena no visvairāk identificējamajām relāciju datu bāzu iezīmēm. Savienojumi ļauj mums apvienot datus no vienas vai vairākām tabulām, pamatojoties uz saistītu nosacījumu, lai izveidotu saskaņotu datu darbību.

SQL ir dažādi savienojumu veidi, un katram ir unikāls veids, kā tas apstrādā datus no iesaistītajām tabulām vai iegūto kopu. Viens no visizplatītākajiem pievienošanās veidiem SQL ir ĀRĒJS JOIN.







ĀRĒJĀ JOIN SQL izgūst visas atbilstošās rindas no iesaistītajām tabulām, kā arī nesaskaņotās rindas no vienas vai abām tabulām. Tas noder, ja strādājat ar tabulām, kurās ir NULL vērtības vai trūkstošās kopas.



Ļaujiet mums sīkāk izpētīt, ko šie savienojumi dara, kā tie darbojas un kā mēs varam tos izmantot SQL datu bāzē.



Prasības:

Šajā apmācībā mēs strādāsim ar MySQL 8.0 un izmantosim Sakila paraugu datubāzi. Tomēr varat izmantot jebkuru citu datu kopu, ko uzskatāt par piemērojamu.





Ārējo savienojumu veidi

SQL ir trīs galvenie ĀRĒJO SAVIENOJUMU veidi. Šie ĀRĒJO SAVIENOJUMU veidi ietver:

  1. Pa kreisi OUTER JOINS

  2. KREISĀS ĀRĒJĀS SAVIENOJUMU gadījumā savienojums izgūst visas rindas no kreisās tabulas un tikai atbilstošās rindas no labās tabulas. Ja no labās tabulas nav atbilstošu rindu, savienojums atgriež NULL vērtības labās tabulas kolonnām.



  3. Tiesības ĀRĒJIE PIEVIENOJUMI

  4. Tas ir līdzīgs RIGHT OUTTER JOIN. Tomēr tas izgūst visas rindas no labās tabulas, bet tikai atbilstošās rindas no kreisās tabulas. Ja no kreisās tabulas nav atbilstošu rindu, savienojumā ir ietvertas NULL vērtības kolonnām kreisajā tabulā.

  5. PILNI ĀRĒJIE PIEVIENOJUMI

  6. Visbeidzot, mums ir PILNI ĀRĒJIE PIEVIENOJUMI. Šis savienojuma veids apvieno gan LABĀ, gan LEFT ārējo savienojumu. Rezultātā savienojums izgūst visas rindas, ja ir atbilstība kreisajā vai labajā tabulā. Ja atbilstības nav, savienojums atgriež NULL vērtības tabulas kolonnām bez atbilstības.

SQL OUTER JOIN sintakse

Tālāk ir norādīta SQL OUTER JOIN sintakse. Tomēr ir labi paturēt prātā, ka sintakse var nedaudz atšķirties atkarībā no mērķa datu bāzes dzinēja.

Tālāk ir sniegta vispārīga struktūra:

ATLASĪT kolonnas
NO tabulas1
[PA kreisi | PAREIZI | FULL] ĀRĒJĀ JOIN tabula2
ON tabula1.kolonnas_nosaukums = tabula2.kolonnas_nosaukums;

ĀRĒJĀ JOIN sintakse SQL ir diezgan pašsaprotama.

Piemēri:

Apskatīsim dažus lietojuma piemērus par to, kā mēs varam izmantot dažādus ĀRĒJO SAVIENOJUMU veidus SQL.

Kā jau minējām, demonstrēšanai izmantosim Sakila paraugu datubāzi. Šajā gadījumā mēs izmantojam tabulas “klients” un “maksājums”.

1. piemērs: LEFT ĀRĒJĀ PIEVIENOŠANĀS

Sāksim ar ĀRĒJO PIEVIENOŠANOS. Pieņemsim, ka mēs vēlamies izgūt visu klienta informāciju, kā arī informāciju par maksājumiem, ja tāda ir pieejama.

Tādējādi tiek piemērots LEFT ĀRĒJAIS PIEVIENOJUMS, jo mēs vēlamies visu informāciju par klientu (kreisajā pusē) un maksājumu informāciju, ja tā ir pieejama (pa labi).

Ja klients nav veicis maksājumu, savienojumā ar maksājumu saistītajām kolonnām tiks rādītas NULL vērtības.

Piemērs ir šāds:

ATLASĪT
c.customer_id,
c.first_name,
c.last_name,
p.summa,
p.payment_date
NO
klients c
LEFT OUTER JOIN maksājums p
IESLĒGTS
c.klienta_id = p.klienta_id;

Dotajā vaicājumā mēs iekļaujam kolonnas “customer_id”, “first_name” un “last_name” no tabulas “customer”. Mēs iekļaujam arī summu un “maksājuma_datums” no tabulas “maksājums”.

Pēc tam mēs veicam LEFT ĀRĒJO SAVIENOŠANOS starp tabulām “klients” un “maksājums”, pamatojoties uz “customer_id”.

Tie ir visi klienti (neatkarīgi no tā, vai maksājums ir veikts vai ne), kā arī viņu maksājuma informācija (ja tāda ir).

Izvades piemērs ir šāds:

2. piemērs: LABAIS ĀRĒJAIS PIEVIENOJUMS

Tagad pāriesim uz LABO ĀRĒJO PIEVIENOŠANOS. Pieņemsim, ka šajā gadījumā mēs vēlamies iekļaut visu maksājumu informāciju un saistīto klientu, ja tāds ir.

Šādā gadījumā, ja maksājumu veic klients, pievienošanās tiks parādīta šī klienta informācija. Ja maksājums nav saistīts ar klientu, ar klientu saistītajās kolonnās tiks rādītas NULL vērtības.

ATLASĪT
c.customer_id,
c.first_name,
c.last_name,
p.summa,
p.payment_date
NO
klients c
RIGHT OUTER JOIN maksājums lpp
IESLĒGTS
c.klienta_id = p.klienta_id;

Iegūtais komplekts ir šāds:

3. piemērs: PILNA ĀRĒJĀ PIEVIENOŠANĀS

FULL OUTTER JOIN, no otras puses, izgūst visu klienta informāciju un maksājumus. Tas ietver visus klientus un visus maksājumus un parāda NULL vērtības, ja starp tabulām nav atbilstības.

ATLASĪT
c.customer_id,
c.first_name,
c.last_name,
p.summa,
p.payment_date
NO
klients c
FULL OUTER JOIN maksājums p
IESLĒGTS
c.klienta_id = p.klienta_id;

Ir labi paturēt prātā, ka MySQL sākotnēji neatbalsta FULL OUTTER JOIN. Jums ir jāveic džiudžitsu maģija, izmantojot LEFT JOIN, UNION un RIGHT JOIN. Diezgan kaitinoši, mēs varētu piebilst.

Secinājums

Šajā apmācībā mēs uzzinājām visu par ĀRĒJIEM PIEVIENOJUMIEM. Mēs uzzinājām, kas ir ĀRĒJAIS SAVIENOJUMS SQL, ĀRĒJĀS PIEVIENOŠANĀS veidus un piemērus, kā izmantot šos ĀRĒJO SAVIENOJUMU veidus.