Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование нескольких источниковСодержание книги
Поиск на нашем сайте Прежде чем приступить к рассмотрению методов использования нескольких источников в запросах, разберем те задачи, которые могут возникать в данной ситуации, иначе нам будет непонятно, зачем вообще существуют эти методы и когда их использовать (постараюсь без математических премудростей и терминов). Можно сказать, что когда мы используем несколько источников для отображения данных в одной таблице, мы их суммируем:
Рисунок 3.1 Но таблицы это не числа, которые можно просто сложить (2 + 3 = 5), и не строки, которые можно склеить ("2"+"3" = "23"). Каждая таблица состоит из: · набор колонок · набор записей И в связи с такой структурой наших источников, возникают сразу два вопроса: · Какие колонки попадут в результирующую таблицу? · Какие строки попадут в результирующую таблицу? И так, рассмотрим возможные варианты сложения таблиц с учетом наших вопросов: · соединение таблиц (объединяем колонки) – горизонтальна я склейка
Рисунок 3.2 · объединение таблиц (объединяем записи) – вертикальная склейка
Рисунок 3.3 В результате появляются два метода в языке запросов, позволяющие выполнять данные операции. Но у каждого способа существуют свои особенности. Рассмотрим теперь детали. Соединение таблиц (Join) Для соединения двух таблиц необходимо чтобы эти таблицы имели определенную структуру. И для понимания данной задачи рассмотрим ее на примере двух записей: Запись таблицы "А" (одна запись)
Запись таблицы "Б" (одна запись)
Нам нужна сводная информация в виде:
Наглядно все понятно, но компьютер не человек, и наглядность ему не поможет. В нашем случае в обеих записях нет единого уникального значения, по которому можно понять, что эти две записи относятся к одному сотруднику (действительно, Василькова и Василькова М.С. могут быть разными людьми). И так получается, главное правило: ДЛЯ СОЕДИНЕНИЯ ЗАПИСЕЙ НЕОБХОДИМО НАЛИЧИЕ ХОТЯ БЫ ОДНОГО КЛЮЧЕВОГО ПОЛЯ В КАЖДОЙ ЗАПИСИ
Рисунок 3.4 Для реализации такой связи в языке запросов существует специальная конструкция, определяемая в конструкторе запросов на закладке Связи:
Рисунок 3.5 Правило соединения в тексте запроса будет следующего содержания:
Рисунок 3.6 Весь текст запроса для нашего примера будет следующим:
Рисунок 3.7 Если в одной таблице по нашему ключевому значению 2 и более записей, то в результате может1 получиться несколько записей, например:
Рисунок 3.8 Запись таблицы "А" (одна запись)
Записи таблицы "Б" (две записи)
Сводная информация будет следующего содержания:
Если мы соединяем таблицы, в которых более двух записей: Записи таблицы "А" (две запись)
Записи таблицы "Б" (две записи)
Сводная информация может содержать следующие данные:
Отображение записей с пустыми2 значениями в колонках, зависит от способа соединения. Существуют 4 варианта:
Выбор варианта влияет и на количество записей в результирующей таблице при одинаковых источниках. [ВНУТРЕННЕЕ] СОЕДИНЕНИЕ означает, что из обеих исходных таблиц? источников данных в результат запроса необходимо включить только те комбинации записей, которые соответствуют указанному условию. Остальные записи в результат не попадают. Например:
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника. Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника. Например:
ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и записи из второго (указанного справа от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из первого источника. Таким образом, в результат запроса будут включены все записи из второго источника; они будут соединены с записями из первого источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из первого источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.
ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обоих источников, для которых не найдено соответствий. Таким образом, в результат запроса будут включены все записи из обоих источников; они будут соединены друг с другом при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из какого - либо источника, будут содержать NULL в полях, формируемых на основании записей из этого источника. Например:
Объединение таблиц (Union) При объединении таблиц, как и при соединении, есть свое главное правило. Чтобы выявить его посмотрим на процесс объединения (вертикальной склейки - как сложение в столбик):
Рисунок 3.9 И так, главное правило: ДЛЯ ПОЛУЧЕНИЯ РЕЗУЛЬТАТ НАМ НЕОБХОДИМО НАЛИЧИЕ В ТАБЛИЦАХ ОДИНАКОВОГО КОЛИЧЕСТВА ПОЛЕЙ При настройке данного объединения, также необходимо определить соответствие колонок, т.е. указать, что данные из колонки 1 первой и второй таблицы будет отражать в колонке 1 результата:
Рисунок 3.10 При настройке соответствий, мы видим, что для буквы 4 нет колонки в таблицеБ (отсутствует). Данное обстоятельство приведет к тому, что конструктор запроса сам создаст вычисляемое поле для второго источника с пустым значением NULL. И мы можем увидеть данный результат в полученном тексте запроса:
Рисунок 3.11 Подстановка значения NULL имеет смысл, только если у нас в правилах соответствия в связке с вычисляемым полем находится поле, не ссылающееся на вложенную таблицу (как в нашем случае). Но, если в одной из таблиц используется ссылка на вложенную таблицу, а в другой ее не нет:
Рисунок 3.12 Конструктор подставит в текст запроса уже вместо NULL значение другого типа:
Рисунок 3.13 В общем случае, при объединении в запросе результатов нескольких запросов следует использовать конструкцию "ОБЪЕДИНИТЬ ВСЕ", а не "ОБЪЕДИНИТЬ". Поскольку во втором варианте, при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-02-07; просмотров: 178; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.10 (0.007 с.) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||