|
Программирование >> Исключение дубликатов строк
vendors table joined with the product vendors table on vendor ID, and then joined with the products table on product number where product name contains bike (Выбрать полное имя клиента и наименование товара из таблицы Клиенты , соединенной с таблицей Заказы по идентификатору клиента, затем соединенной с таблицей Детали заказа по номеру заказа, затем соединенной с таблицей Товары по номеру товара, где наименование товара содержит *bike, в соединении с (Выбрать имя поставщика и наименование товара из таблицы Поставщики , соединенной с таблицей Товары поставщика по идентификатору поставщика и затем соединенной с таблицей Товары по наименованию товара, где наименование товара содержит велосипед)) Уточнение: Select customer full name me product name from the customers table joined with the orders table on customer ID, theft joined with the order details table on order number, and then joined with the products table on product number where product name contains LIKE %bike%, combined with UNION select vendor name т6 product name from the vendors table joined with the product vendors table on vendor ID, and then joined with the products table on product number where product name contains LIKE %bike% (Выбрать полное имя клиента, наименование товара из Клиенты , соединенной с Заказы по идентификатору клиента, соединенной с Детали заказа по номеру заказа, соединенной с Товары по номеру товара, где наименование товара LIKE *%bike%, UNION (в соединении с) (Выбрать имя поставщика, наименование товара из Поставщики , соединенной с Товары поставщика по идентификатору поставщика, соединенной с Товары по наименованию товара, где наименование товара содержит LIKE *%bike%)) SQL SELECT Customers.CustLastName Customers.CustFirstName AS FullName, Products.ProductName, Customer AS RowID FROM ((Customers INNER JOIN Orders ON Customers.CustomerlD = Orders.CustomerlD) INNER JOIN Order.Details ON Orders.OrderNumber = Order Details.OrderNumber) INNER JOINProducts ON Products.ProductNumber = OrderDetails.ProductNumber WHERE Products.ProductName LIKE XbikeX UNION SELECT Vendors.VendName, Products.ProductName, Vendor AS RowID FROM (Vendors INNER JOIN ProductVendors ON Vendors.VendorlD = Product Vendors.VendorlD) INNER JOIN Products ON Products.ProductNumber = Product Vendors.ProductNumber WHERE Products.ProductName LIKE XbikeX Хотя полученный результат оказался размером с ранчо, однако дело сделано! Обратите внимание, что в оба оператора SELECT также добавлен строковый литерал с именем RowID, так что будет легко увидеть, какие строки ведут свое происхождение от клиентов, а какие - от поставидиков. Можно было попробовать вставить ключевое слово DISTINCT в первый оператор SELECT, поскольку хороший клиент, возможно, заказывал конкретную модель велосипеда более одного раза. Поскольку в UNION не использовалось ключевое слово ALL, запрос исключит дубликаты. Если добавить DISTINCT, это может означать, что у системы базы данных дважды запрошено исключение дубликатов! Когда необходимо построить запрос UNION, рекомендуется построить вначале отдельные операторы SELECT. Затем можно легко скопировать и вставить синтаксис каждого из операторов SELECT в новый запрос, отделив каждый оператор ключевым словом UNION. Использование UNION более одного розо UNION можно использовать для объединения нескольких множеств наборов результата. Можно последовательно записать спецификацию второго оператора SELECT с другим ключевым словом UNION и еш,е один оператор SELECT. Хотя в некоторых реализациях имеются ограничения на количество наборов результатов, которые можно объединить в UNION, теоретически можно добавлять UNION SELECT без всяких ограничений. Предположим, что необходимо построить единый список адресов из трех различных таблиц - Customers, Employees и Vendors. На рис. 10.9 показана диаграмма синтаксиса для построения этого списка. Очевидно, что нужно создать один оператор SELECT для извлечения всех имен и адресов из таблицы Customers, объединив (UNION) его с оператором SELECT для получения этой же информации из таблицы Employees и, наконец, с оператором SELECT для получения имен и адресов из таблицы Vendors. DISTINCT fcnii *ii.miiiniii !i FROIVI - имятаблицы Типтироваиное выражение UNCON SELECT DISTINCT Типтироваиное выражение FROM ->* имятаблицы UNION SELECT DISTINCT 1 ЧтЧЧвЯЧ FROM имяоблицы -Типизированное выражение - Рис. 10.9. Создание UNION трех таблиц Create а single mailing list for customers, employees, and vendors . ( Создать простой список почтовой рассылки для клиентов, сотрудников и поставщиков .) Преобразование/ Уточнение: Select customer full name, customer street address, customer city, customer state, afte customer zip code from the customers table combined with UNION Select employee full name, employee street address, employee city, employee state, attd employee zip code from the employees table combined with UNION Select vendor name, vendor street address, vendor city, vendor state, atte vendor zip code from the vendors table (Выбрать полное имя, улицу в адресе клиента, город клиента, штат клиента, почтовый индекс клиента из, Клиенты UNION (в соединении с) (Выбрать полное имя, улицу в адресе сотрудника, город сотрудника, штат сотрудника, почтовый индекс сотрудника из Сотрудники ) UNION (Выбрать полное имя, улицу в адресе поставидика, город поставидика, штат поставш,ика, почтовый индекс поставидика из Сотрудники ))
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |