SQL Join za viacerých podmienok

Sql Join Za Viacerych Podmienok



Jednou z najrozšírenejších funkcií relačných databáz sú spojenia. SQL spojenia sa týkajú procesu kombinovania údajov z dvoch alebo viacerých tabuliek do jednej sady výsledkov založenej na štandardných funkciách alebo stĺpcoch.

Spojenie tabuliek nám umožňuje získať údaje, ktoré sú uložené vo viacerých tabuľkách, v jednom dotaze, čo z neho robí výkonný nástroj na analýzu údajov a vytváranie prehľadov.







V tomto návode zistíme, ako vykonať spojenia SQL za viacerých podmienok. Naučíme sa používať logické operátory „AND“ a „OR“ na spájanie údajov na základe viacerých podmienok.



SQL sa spája za viacerých podmienok

Pomocou operátorov AND alebo OR v SQL môžeme zadať viacero podmienok. Tieto operátory nám umožňujú definovať množinu booleovských výrazov, ktoré sa potom vyhodnocujú a porovnávajú s výslednou množinou.



Používame operátor AND, aby sme sa uistili, že všetky špecifikované podmienky sú pravdivé. Ak čo i len jedna z podmienok nie je pravdivá, celý výraz sa vykreslí ako nepravdivý. Vďaka tomu je operátor AND výnimočným nástrojom na extrémne filtrovanie údajov.





Na druhej strane používame operátor OR, keď potrebujeme, aby bola splnená aspoň jedna z podmienok. Vďaka tomu je to „voľnejšia“ metóda filtrovania údajov, pretože výsledný záznam musí spĺňať aspoň jeden definovaný parameter.

Funkčnosť operátorov AND a OR sa nemení ani v prípade spojení SQL.



Príklad viacnásobného spojenia SQL

Ak chcete pochopiť, ako pracovať so spojeniami vo viacerých podmienkach, je najlepšie pracovať s príkladom.

Na túto ukážku používame databázu Sakila, ktorá bola vyvinutá na preskúmanie všetkých možností SQL.

Predpokladajme, že chceme získať údaje z tabuliek filmu a filmového herca. Najprv chceme nájsť všetkých hercov, ktorí hrali vo filme, ktorí majú hodnotenie PG alebo PG-13 a majú dĺžku medzi 90 a 120.

V takomto scenári musíme vykonať spojenie s viacerými podmienkami, ako je uvedené nižšie:

SELECT herec.first_name, herec.priezvisko, film.title, film.release_year, film.rating
OD herca
PRIPOJTE SA k filmovému_hercovi NA actor.actor_id = filmový_actor.actor_id
PRIPOJTE SA k filmu NA film_actor.film_id = film.film_id
KDE film.dĺžka MEDZI 90 A 120
A film.hodnotenie IN ( 'PG' , 'PG-13' ) ;


Ako môžete vidieť z predchádzajúceho dotazu, hovoríme SQL, aby vykonal spojenie medzi tabuľkami herec a film_actor na základe stĺpca actor_id. Taktiež vykonáme spojenie medzi film_actor a filmovými tabuľkami pomocou stĺpca film_id. Zabezpečujeme tiež definovanie dvoch podmienok pomocou klauzuly WHERE na filtrovanie výsledkovej tabuľky na základe roku vydania a dĺžky filmu.

Výsledná tabuľka je nasledovná:


Môžeme tiež zadať viaceré podmienky na základe operátora OR, ako je to znázornené v nasledujúcom príklade dotazu:

VYBERTE názov.filmu, sadzbu_požičovne filmu, názov kategórie
Z filmu
PRIPOJTE SA k kategórii filmu NA film.film_id = film_category.film_id
PRIPOJTE SA k kategórii ON film_category.category_id = category.category_id
KDE kategória.názov IN ( 'Akcia' , 'komédia' )
A film.prenájom_sadzby > 3,00 ;


Výsledná tabuľka je nasledovná:

Záver

Tento tutoriál skúmal, ako pracovať so spojeniami SQL na základe viacerých podmienok pomocou operátorov AND a OR. To poskytuje podrobnejšie filtrovanie údajov.