Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Двусмысленность в запросах JOIN
Двусмысленность в запросах JOIN
В различных книгах по теории баз данных сказано, что двусмысленность может существовать, только когда некоторые имена столбцов появляются в нескольких потоках. Человек, практически работающий с базами данных, может рассказать другую историю. Вопрос устранения двусмысленности отпадает в зависимости от способа, каким сервер базы данных реализует синтаксический разбор, создание потоков и сортировку, которые выполняются в процессе операции соединения.
InterBase был снисходителен к отклонениям от недвусмысленности в синтаксисе соединений - иногда с неудачными результатами. Если вы переносите существующий код вашего приложения, работавшего с InterBase, не пугайтесь исключений SQL, которые выдаст Firebird в процессе первого тестового выполнения запросов с соединениями. Он покажет вам места в вашем коде, где раньше допускалось выполнение запросов, которые могли возвращать неверные результаты.
Firebird не примет запросы соединения, содержащие ссылки на столбцы, которые не имеют полного квалификатора таблицы. Квалификатор таблицы может быть идентификатором таблицы или алиасом таблицы. Начиная с версии 1.5 недопустимо их смешивать. Если вы используете версию 1.0, будьте последовательны, если хотите избежать переписывания кода при переходе на новые версии.
Предыдущие примеры использовали идентификаторы таблиц. Использование алиасов таблиц более элегантно и компактно, а для некоторых запросов (см. разд. "Реентерабельные соединения") является обязательным.
- Виды многотабличных запросов
- Соединения
- Подзапросы
- Запросы UNION
- Соединения
- Внутреннее соединение
- Внешние соединения
- Перекрестные соединения
- Естественные соединения
- Двусмысленность в запросах JOIN
- Алиасы таблиц
- Внутренний курсор
- Реентерабельные соединения
- Подзапросы
- Задание столбца при использовании подзапроса
- Поиск с использованием подзапроса
- Добавление данных с использованием подзапроса с соединениями
- Оператор UNION
- Наборы, совместимые для объединения
- Использование столбцов времени выполнения в объединениях
- Условия поиска и упорядочивания
- Реентерабельные запросы UNION
- UNION ALL
- Темы оптимизации: планы запросов и оптимизатор
- Основные сведения о запросах
- Joining Tables
- Синтаксис явного INNER JOIN в SQL-92
- FULL OUTER JOIN
- Метод GroupJoin
- Выполнение вычислений в запросах
- Пример: функция mcast_join
- LEFT OUTER JOIN
- Тайм-ауты ядра и функция pthread_join()
- Двусмысленность – отрава для ума
- Метод JoinIntoString
- 7.8.1. Метод join()