Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Gt; FROM individual _> UNION ALL

ANSI_синтаксис соединения | Соединение трех и более таблиц | Применение подзапросов в качестве таблиц | Повторное использование таблицы | Рекурсивные соединения | Сравнение эквисоединений с неэквисоединениями | Gt; FROM employee e1 INNER JOIN employee e2 | Сравнение условий соединения и условий фильтрации | Упражнения | Основы теории множеств |


Читайте также:
  1. Aufrisszone ~~> Ort wo man mit hoher WahrscheinlichkeiteinenFreund / eine Freundin kennen lernen kann
  2. Burnen ~~> attraktiv. bewundernswert,cool
  3. Dönern~~> eine Blähung haben
  4. Faker ~~> Simulant
  5. Gesichtselfmeter ~~> unattraktives Gesicht
  6. Gt; LENGTH(vchar_fld) varchar_length, _> LENGTH(text_fld) text_length

 

_> SELECT cust_id, name _> FROM business;

 

+_________+________________________+ | cust_id | name | +_________+________________________+

 

|   | Hadley |
|   | Tingley |
|   | Tucker |
|   | Hayward |
|   | Frasier |
|   | Spencer |
|   | Young |
|   | Blake |
|   | Farley |
|   | Chilton Engineering |

 

| 11 | Northeast Cooling Inc. |

 

|   | Superior Auto Body |
|   | AAA Insurance Inc. |

 

+_________+________________________+ 13 rows in set (0.04 sec)

 

Запрос возвращает все 13 клиентов: 9 строк поступают из таблицы in_ dividual (физические лица), а остальные 4 – из таблицы business (юри_ дические лица). Таблица business включает всего один столбец с назва_ нием компании, а в таблице individual присутствуют два столбца: имя и фамилия физического лица. В данном случае из таблицы individual берется только фамилия.

 

Проверим, что оператор union all не удаляет дублирующие значения. Для этого приведем такой же запрос, как в предыдущем примере, но с дополнительным запросом к таблице business:

 

mysql> SELECT cust_id, lname name
_> FROM individual
_> UNION ALL
_> SELECT cust_id, name
_> FROM business
_> UNION ALL
_> SELECT cust_id, name
_> FROM business;

 

        Глава 6. Работа с множествами
 
+_________+________________________+
| cust_id | name |
+_________+________________________+
|   | Hadley |
|   | Tingley |
|   | Tucker |
|   | Hayward |
|   | Frasier |
|   | Spencer |
|   | Young |
|   | Blake |
|   | Farley |
|   | Chilton Engineering |
|   | Northeast Cooling Inc. |
|   | Superior Auto Body |
|   | AAA Insurance Inc. |
|   | Chilton Engineering |
|   | Northeast Cooling Inc. |
|   | Superior Auto Body |
|   | AAA Insurance Inc. |

 

+_________+________________________+ 17 rows in set (0.01 sec)

 

Этот составной запрос включает три выражения select, два из которых идентичны. Как видно по результатам, четыре строки из таблицы bu_ siness включены дважды (ID клиентов 10, 11, 12 и 13).

 

Поскольку вряд ли вы когда_нибудь дважды включите один и тот же запрос в составной запрос, вот другой пример составного запроса, по которому возвращаются дублирующие данные:

 

mysql> SELECT emp_id
_> FROM employee
_> WHERE assigned_branch_id = 2
_> AND (title = 'Teller' OR title = 'Head Teller')
_> UNION ALL
_> SELECT DISTINCT open_emp_id
_> FROM account
_> WHERE open_branch_id = 2;

 

+________+ | emp_id | +________+

 

| 10 |

 

| 11 |

 

| 12 |

 

| 10 |

+________+

 

4 rows in set (0.01 sec)


 

Первый запрос составного выражения выбирает всех операционистов отделения Woburn, а второй возвращает другое множество – операцио_ нистов, открывавших счета в отделении Woburn. Из четырех строк ре_


 

Операторы работы с множествами  
   

 

зультирующего набора одна дублируется (ID сотрудника – 10). Если бы потребовалось исключить дублирующие строки из составной таб_ лицы, вместо оператора union all надо было бы использовать оператор union:

 

mysql> SELECT emp_id
_> FROM employee
_> WHERE assigned_branch_id = 2
_> AND (title = 'Teller' OR title = 'Head Teller')
_> UNION  
_> SELECT DISTINCT open_emp_id
_> FROM account
_> WHERE open_branch_id = 2;

 

+________+ | emp_id | +________+

 

| 10 |

 

| 11 |

 

| 12 |

+________+

 

3 rows in set (0.01 sec)

 

Для данной версии запроса с применением оператора union all в резуль_ тирующий набор включаются только три разные строки, а не четыре (три разные, одна дублирующаяся).

 


Дата добавления: 2015-08-17; просмотров: 51 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Теория множеств на практике| SELECT cust_id, fname, lname

mybiblioteka.su - 2015-2024 год. (0.008 сек.)