|
Программирование >> Исключение дубликатов строк
Поэтому, если задача содержит слова должно быть это и должно быть то , значит, необходимо получить решение для это , а затем - для то и после этого связать все вместе для получения окончательного решения. Стандарт SQL определяет удобную операцию INTERSECT, но JOIN может работать также хорошо (см. главу 8). Более того, если задача включает условие долоюно быть это, но не должно быть то , необходимо вначале решить это , а затем то и после вычесть то из это , чтобы получить ответ. Мы показали вам операцию EXCEPT из стандарта SQL, но, используя OUTER JOIN, также может выполнить этот трюк (см. главу 9). В конце главы мы показали, как складывать множества информации с по-мош.ью UNION. 41 Si Внутренние соединения He сдерживайте свое вдохновение и вообраэюение, не становитесь рабом натурщика . Винсент Ван Гог Вопросы, россмотрипоемые и донной глопе Что TOKO0 JOIN NNeR JOIN Лспользовониб опброций INN€R JOIK риллбры опероторов Лтоги зооочи оля соллостоятольного оошония ри1[0 этого момента наше внимание в основном было сосредоточено на решении задач с использованием взятых в отдельности таблиц. Теперь вы знаете, как получать простые ответы из одной таблицы, как получить немного более сложные ответы, используя выражения или сортировку набора результатов. Образно говоря, вам теперь известно, как безукоризненно нарисовать глаза, подбородок, рот или нос. В данной главе показано, как связать все это вместе, как соединить несколько частей лица, чтобы получить портрет. Что токов JOIN Мы уже подчеркивали важность разделения данных в таблицах по отдельным предметам. Однако большинство задач, которые необходимо решать в реальной жизни, требуют связывания в одно целое данных из нескольких таблиц - Customers (Клиенты) и Orders (Заказы), Customers и Entertainers (Эстрадные артисты). Bowlers (Игроки в боулинг) и Scores (Очки), Students (Студенты) и посеидаемые ими Classes (Курсы лекций) или Recipes (Рецепты) и необходимые Ingredients (Компоненты). Для решения таких более сложных задач необходимо связать их вместе, или соединить несколько таблиц. Для этого используется ключевое слово JOIN. В предьщуидей главе показано, насколько полезно получить пересечение двух множеств данных для решения задач. Однако для получения ответа с использованием INTERSECT требуется совпадение всех столбцов в обоих наборах результатов. JOIN также является операцией пересечения, но она отличается от остальных, потому что при ее выполнении от системы базы данных требуется присоединения только указанных столбцов. Таким образом, JOIN позволяет получить пересечение двух очень разнородных таблиц на основе совпадения значений столбцов. Например, можно воспользоваться JOIN для связывания Customers с их Orders путем сопоставления CustomerlD из таблиц в Customers с CustomerlD в таблице Orders. JOIN рассматривается как часть условия FROM в операторе SQL. JOIN определяет логическую таблииу , которая является результатом связывания двух таблиц или наборов результатов. Помещение JOIN в условие FROM определяет порядок связывания таблиц, из которых запрос извлекает окончательный набор результатов. Другими словами, JOIN заменяет имя отдельной таблицы. Можно также определить несколько операций JOIN для создания сложного набора результатов на основе более чем двух таблиц. INN€ft JOIN Стандарт SQL определяет несколько способов выполнения операций JOIN, наиболее обычным из которых является INNER JOIN. Предположим, вы связываете студентов и курсы лекций, на которые они записались. Может случиться так, что некоторые студенты, которые уже были приняты, еще не записались на какие-либо лекции. А может быть и так, что на некоторые курсы лекций, которые имеются в расписании, еще не записался ни один студент. Операция INNER JOIN между таблицей Students и таблицей Classes возвращает строки Student, связанные с соответствующими строками Classes (через таблииу Student Schedules) - но она не возвращает ни студентов, которые еще не зарегистрировались на какой-либо курс лекций, ни курсы лекций, на которые не записался ни один студент. INNER JOIN возвращает только те строки, где связывающие значения совпадают в обеих таблицах или в обоих наборах результатов. Что розрешено а JOIN Чаще всего связью, которую использует JOIN, является первичный ключ из одной таблицы и связанный внешний ключ из второй таблицы. Внешний ключ должен иметь тот же тип данных, что и связанный первичный ключ. Однако в JOIN также разрешается соединить две таблицы или два набора результатов по любым столбцам, которые имеют, как это называется в стандарте SQL, типы данных, пригодные для соединения . В общем случае можно соединить один символьный столбец с другим символьным столбцом или выражением, столбец любого числового типа (например, целый) с любым столбцом другого числового типа (возможно, со значениями типа с плавающей точкой ) и любой столбец типа дата с другим столбцом типа дата . Это позволит, например, соединять в JOIN строки из таблицы Customers со строками из таблицы Employees по столбцам City (Город) или Zip Code (Почтовый индекс) -
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |