Една от най-разпространените характеристики на релационните бази данни е присъединяването. SQL обединенията се отнасят до процеса на комбиниране на данните от две или повече таблици в един резултатен набор въз основа на стандартни функции или колони.
Обединяването на таблиците ни позволява да извличаме данните, които се съхраняват в множество таблици в една заявка, което го прави мощен инструмент за анализ на данни и отчитане.
В този урок ще открием как да изпълняваме SQL обединения при множество условия. Ще се научим да използваме логическите оператори „И“ и „ИЛИ“, за да обединим данните въз основа на множество условия.
SQL съединява при множество условия
Можем да посочим множество условия, като използваме операторите И или ИЛИ в SQL. Тези оператори ни позволяват да дефинираме набор от булеви изрази, които след това се оценяват и сравняват с получения набор.
Използваме оператора И, за да гарантираме, че всички посочени условия са верни. Ако дори едно от условията не е вярно, целият израз се прави неверен. Това прави оператора И изключителен инструмент за екстремно филтриране на данни.
От друга страна, ние използваме оператора OR, когато трябва поне едно от условията да е вярно. Това го прави по-„свободен“ метод за филтриране на данни, тъй като полученият запис трябва да отговаря само на поне един дефиниран параметър.
Функционалността на операторите И и ИЛИ не се променя дори в случай на SQL присъединяване.
Пример за множество съединявания на SQL
За да разберете как да работите с обединения при множество условия, най-добре е да работите с пример.
За тази демонстрация използваме базата данни Sakila, която е разработена, за да изследва пълните възможности на SQL.
Да предположим, че искаме да извлечем данните от филма и таблиците film_actor. Първо, искаме да намерим всички актьори, които са участвали във филма, които са с рейтинг PG или PG-13 и имат дължина между 90 и 120.
В такъв сценарий трябва да извършим свързване с множество условия, както е показано по-долу:
ИЗБЕРЕТЕ actor.first_name, actor.last_name, film.title, film.release_year, film.ratingОТ актьор
ПРИСЪЕДИНЕТЕ СЕ към film_actor ON actor.actor_id = film_actor.actor_id
ПРИСЪЕДИНЕТЕ СЕ към филм В film_actor.film_id = film.film_id
WHERE филм.дължина BETWEEN 90 И 120
И филм.оценка IN ( 'PG' , 'PG-13' ) ;
Както можете да видите от предишната заявка, казваме на SQL да извърши свързване между таблиците actor и film_actor въз основа на колоната actor_id. Ние също така извършваме свързване между film_actor и филмовите таблици, като използваме колоната film_id. Също така гарантираме дефинирането на две условия, като използваме клаузата WHERE, за да филтрираме таблицата с резултати въз основа на годината на издаване и дължината на филма.
Получената таблица е както следва:
Можем също да посочим множеството условия въз основа на оператора OR, както е показано в следната примерна заявка:
ОТ филм
ПРИСЪЕДИНЕТЕ СЕ към film_category ON film.film_id = film_category.film_id
ПРИСЪЕДИНЕТЕ СЕ към категория НА film_category.category_id = category.category_id
WHERE category.name IN ( 'екшън' , 'Комедия' )
И film.rental_rate > 3.00 ;
Получената таблица е както следва:
Заключение
Този урок изследва как да работите със SQL обединения въз основа на множество условия, като използвате операторите И и ИЛИ. Това осигурява по-подробно филтриране на данни.