Union (SQL)Union — у мовах, подібних до SQL, DML-операція об'єднання записів в одну таблицю. Критерій відбору записів для об'єднання визначається виразом Where. Обидва запити повинні повертати однакове число стовпців і мати сумісні типи даних у відповідних стовпцях. Цей оператор було описано у другому стандарті SQL — SQL-89[1]. СинтаксисОператор вказується між запитами. У спрощеному вигляді це виглядає так: <запит1>
UNION [ALL]
<запит2>
UNION [ALL]
<запит3>
.....
За замовчуванням, будь-які повторювані записи автоматично ігноруються, якщо не використано вираз Необхідно зазначити, що Правила використанняІснують два основні правила, що регламентують порядок використання оператора
Визначення стовпців, дані з яких беруться в об'єднувальних запитах, не повинні збігатися, проте повинні бути сумісними шляхом неявного перетворення. Якщо типи даних різняться, то тип даних, що вийшов, визначається на основі правил черговості типів даних (для конкретної СКБД). Якщо типи збігаються, але розрізняються в точності, масштабі або довжині, результат визначається на основі правил, використовуваних для об'єднання виразів (для конкретної СКБД)[2]. Типи даних, не визначені ANSI, такі як У Microsoft SQL Server стовпці з типом даних XML повинні бути еквівалентними. Всі стовпчики повинні або мати тип, визначений у XML-схемі, або бути нетипізованими. Типізовані стовпці повинні стосуватися однієї і тієї ж колекції XML-схем[2]. Ще одне обмеження на сумісність — це заборона порожніх значень ( ПрикладиВикористання UNION при вибірці з двох таблицьДано дві таблиці:
При виконанні запиту SELECT * FROM sales-2008
UNION
SELECT * FROM sales-2010;
виходить результатний набір, однак порядок рядків може бути довільним, оскільки ключовий вираз
У результаті буде два рядки з Петром, оскільки вони відрізняються значеннями, але рядок з Павлом буде один, бо рядки повністю ідентичні. Використання UNION ALL при вибірці з двох таблицьВикористання SELECT * FROM sales-2008
UNION ALL
SELECT * FROM sales-2010;
дає наступний результат:
Використання UNION при вибірці з однієї таблиціАналогічним чином можна поєднувати два різні запити з однієї таблиці (хоча замість цього, як правило, необхідні параметри комбінують в одному запиті за допомогою ключових слів SELECT person, amount FROM sales-2008 WHERE amount=1000
UNION
SELECT person, amount FROM sales-2010 WHERE person like 'Василь';
У результаті отримаємо:
Використання UNION як зовнішнє об'єднанняЗа допомогою SELECT *
FROM employee
LEFT JOIN department
ON employee.DepartmentID = department.DepartmentID
UNION
SELECT *
FROM employee
RIGHT JOIN department
ON employee.DepartmentID = department.DepartmentID;
Але при цьому необхідно пам'ятати, що це все-таки не одне і те саме, що й оператор Примітки
Посилання
|
Portal di Ensiklopedia Dunia