SQL Join za více podmínek

Sql Join Za Vice Podminek



Jednou z nejrozšířenějších funkcí relačních databází jsou spojení. Spojení SQL se týkají procesu kombinování dat ze dvou nebo více tabulek do jediné sady výsledků založené na standardních funkcích nebo sloupcích.

Spojení tabulek nám umožňuje získat data uložená ve více tabulkách v jediném dotazu, což z něj dělá výkonný nástroj pro analýzu dat a vytváření sestav.







V tomto tutoriálu zjistíme, jak provést spojení SQL za více podmínek. Naučíme se používat logické operátory „AND“ a „OR“ ke spojení dat na základě více podmínek.



SQL spojení za více podmínek

Můžeme zadat více podmínek pomocí operátorů AND nebo OR v SQL. Tyto operátory nám umožňují definovat sadu booleovských výrazů, které jsou následně vyhodnoceny a porovnány s výslednou sadou.



Používáme operátor AND, abychom zajistili, že všechny uvedené podmínky jsou pravdivé. Pokud ani jedna z podmínek není pravdivá, celý výraz je vykreslen jako nepravdivý. Díky tomu je operátor AND výjimečným nástrojem pro extrémní filtrování dat.





Na druhou stranu používáme operátor OR, když potřebujeme, aby byla splněna alespoň jedna z podmínek. Díky tomu je to „volnější“ metoda filtrování dat, protože výsledný záznam musí splňovat alespoň jeden definovaný parametr.

Funkčnost operátorů AND a OR se nemění ani v případě spojení SQL.



Příklad vícenásobných spojení SQL

Abyste pochopili, jak pracovat se spojeními za více podmínek, je nejlepší pracovat s příkladem.

Pro tuto ukázku používáme databázi Sakila, která byla vyvinuta k prozkoumání všech možností SQL.

Předpokládejme, že chceme načíst data z tabulek filmu a filmového herce. Nejprve chceme najít všechny herce, kteří ve filmu hráli, kteří mají hodnocení PG nebo PG-13 a mají délku mezi 90 a 120.

V takovém scénáři musíme provést spojení s více podmínkami, jak je znázorněno v následujícím:

SELECT herec.křestní_jméno, herec.příjmení, název.filmu, rok_vydání filmu, hodnocení.filmu
OD herce
PŘIPOJTE SE k filmovému_herci NA actor.actor_id = filmový_actor.actor_id
PŘIPOJTE SE k filmu NA film_actor.film_id = film.film_id
KDE film.délka MEZI 90 A 120
A hodnocení filmu V ( 'PG' , 'PG-13' ) ;


Jak můžete vidět z předchozího dotazu, říkáme SQL, aby provedl spojení mezi tabulkami herec a film_actor na základě sloupce actor_id. Provádíme také spojení mezi film_actor a filmovými tabulkami pomocí sloupce film_id. Zajistíme také definování dvou podmínek pomocí klauzule WHERE pro filtrování výsledkové tabulky na základě roku vydání a délky filmu.

Výsledná tabulka je následující:


Můžeme také zadat více podmínek na základě operátoru OR, jak je znázorněno v následujícím příkladu dotazu:

SELECT film.title, film.pronajem_sazba, kategorie.name
Z filmu
PŘIPOJTE SE k filmové_kategorii NA film.film_id = film_kategorie.film_id
JOIN category ON film_category.category_id = category.category_id
KDE kategorie.název IN ( 'Akce' , 'Komedie' )
A film.pronájem_sazba > 3,00 ;


Výsledná tabulka je následující:

Závěr

Tento kurz prozkoumal, jak pracovat se spojeními SQL na základě více podmínek pomocí operátorů AND a OR. To poskytuje podrobnější filtrování dat.