|
Программирование >> Исключение дубликатов строк
о- SELECT LEFT RIGHT DISTINCT ТипизированйО0 вырожфнив ----- ---нч FROM Ip- JOIN - имятаблицы - ON Условие поиска OUTER :>i;;;MiM;ll jljll>>>> ;ilW; l;ji, LEFT t-RIGHT J L OUTER 3sr 1 JOIN имятаблицы ON - VtnoAf© поиска -r- Рис. 9.9. Простая операция JOIN трех таблиц JOIN двух таблиц, заключенное в скобки, образует логическую таблииу, или внутренний набор результатов. Этот набор теперь помещается вместо имени первой простой таблицы на рис. 9.5, и данный процесс можно продолжить, заключая в скобки полное условие JOIN, добавляя затем еще одно ключевое слово JOIN, имя таблицы, ключевое слово ON и условие поиска, пока не будут получены все необходимые наборы результатов. Создадим запрос, для которого требуются данные из всех таблиц, представленных на рис. 9.7. (этот тип запроса можно использовать для создания отчета, в котором перечисляются все виды рецептов с деталями рецептов в каждом из видов): 7 need all of the recipe types, and then the matching recipe name, preparation instructions, ingredient names, ingredient step number, ingredient quantities, and ingredient measurements from my Recipes database, sorted in step number sequence . ( Нужны все виды рецептов, относящиеся к ним названия рецептов, указания по приготовлению, названия компонентов, номер этапа добавления компонента, количество компонента и единицы измерения компонента из базы данных Рецепты , отсортированные в последовательности номеров этапов . Преобразование: Select the recipe class description, recipe title, preparation instructions, ingredient name, recipe sequence number, amount, and measurement description from the recipe classes table left outer joined with the recipes table on recipe class ID, then joined with the recipe ingredients table on recipe ID, then joined with the ingredients table on ingredient ID, and then finally joined with the measurements table on measurement amount ID, order by recipe title and recipe sequence number (Выбрать описание вида рецепта, заголовок рецепта, указания по приготовлению, название компонента, порядковый номер рецепта, коли[ество и описание единиц измерения из таблицы Виды рецептов с левым внешним соединением с таблицей Рецепты по идентификатору вида рецептов, соединенной с таблицей Компоненты рецепта по идентификатору рецепта, соединенной с таблицей Компоненты по идентификатору компонента и, наконец, соединенной с таблицей единиц измерения по идентификатору единиц измерения, упорядоченные по заголовку рецепта и порядковому номеру рецепта) Уточнение: Select the recipe class description, recipe title, preparation instructions, ingredient name, recipe sequence number, amount, me measurement description from the recipe classes table left outer joined with the recipes table on recipe class ID, thett joined with the recipe ingredients table on recipe ID, thett joined with the ingredients table on ingredient ID, and then finally joined with the nieasurements table on measurement amount ID, order by recipe title recipe sequence number (Выбрать описание вида рецепта, заголовок рецепта, приготовление, название компонента, порядковый номер рецепта, количество, описание единиц измерения из Виды рецептов с левым внешним соединением с Рецепты по идентификатору вида рецептов, соединенной с Компоненты рецепта по идентификатору рецепта, соединенной с Компоненты по идентификатору компонента, соединенной с Единицы измерения по идентификатору единиц измерения, упорядоченные по заголовку рецепта, порядковому номеру рецепта) SQL SELECT Recipe Classes.RecipeClassDescription, Recipes.RecipeTitle,Recipes.Preparation, Ingredients.IngredientName, Recipe Ingredients.RecipeSeqNo, RecipeIngredients.Amount, Measu rements.Measu rementDesc ription FROM (((Recipe Classes LEFT OUTER JOIN Recipes ON Recipe.Classes.RecipeClassID = Recipes.RecipeClassID) INNER JOIN RecipeIngredients ON Recipes.RecipelD = RecipeIngredients.RecipelD) INNER JOIN Ingredients ON Ingredients.IngredientID = Recipe.Ing redients.Ing redientID) INNER JOIN Measurements ON Measurements.MeasureAmountID = RecipeIng redients.Measu reAmountID ORDER BY RecipeTitle, RecipeSeqNo Действительно, можно заменить взятое в целом JOIN двух таблиц в любом месте, где можно в ином случае поместить просто имя таблицы. На рис. 9.9 предполагается, что необходимо вначале соединить первую таблицу со второй, а затем этот результат соединить с третьей таблицей. Также можно вначале соединить вторую и третью таблицы (в том случае, если третья таблица фактически имеет отношение ко второй таблице, но не к первой), а затем выполнить окончательное соединение с первой таблицей. На рис. 9.10 представлен этот альтернативный метод. Типтировонное аыражвтв i ii ijii.itii(iiijiri(i!ini!i \Щ ihitij*iitHiiiii<Mrtiititiiiita .<i **>;iWi! ;i!ib:< имятоблицы LEFT RIGHT JOIN OUTER имятоблицы INNER LEFT RIGHT L OUTER JOIN и мя табл и ЦЫ I ill f fiB li I УЬловиф поиско ON УЬловив поиска Рис. 9.10. Соединение более чем двух таблиц в альтернативной последовательности
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |