ПредишенСледващото

FULL ВЪНШНА JOIN

Пълен външна връзка (FULL ВЪНШНА JOIN) е изцяло включително. Тя връща един ред за всяка двойка на съответните потоци и един частично запълнена с линия за всеки ред на всеки поток, където е намерено минута. Това съединение съчетава поведение на левия и десния връзки.

Хелън Borrie - Firebird управление разработчик на база данни - страница 107

Фиг. 22.4. пълен съединение

Ето един оператор, използващ същата входящи потоци, като нашия пример INNER JOIN:

ОТ Таблица 1 FULL JOIN Таблица 2

ON Table1.PK = Table2.FK

Фиг. 22.4 показва как потоци се комбинират за завършване на свързването.

напречни връзки

Firebird не поддържа езикови елементи за насочване и свързване (кръстосано JOIN), който създава набор от данни, която е декартово произведение на две маси. Това означава, че за всеки поток на левия ред изходен поток ще съдържа всеки ред от десния поток. В редки случаи, когато имате нужда от декартово произведение, можете да използвате синтаксиса на SQL-89, без никакви критерии за свързване в клаузата WHERE, например:

SELECT Т1 *, Т2 * ОТ Т1 Таблица 1, Таблица 2 Т2 ..;

Firebird заявка манипулатор понякога вътрешно създава кръстосани връзки при изграждането на "реката" в процеса на съвместни операции (вж. Раздел ". Теми оптимизация" на тази глава).

природни съединения

Firebird не поддържа естествения съединение (ПРИРОДЕН УЧАСТВА), известен също като опа-присъединят (EQUI JOIN), което създава данни, определен от свързването на две колони поток, базирани съвпадение, използвайки общи идентификатори колони с еднакви стойности. Много популярни, винаги трябва да се уточни присъединят състояние.

Неяснотата в JOIN заявка

В различни книги, посветени на теорията на база данни се казва, че неяснота може да съществува само, когато някои имена на колони се появяват в множество нишки. Мъжът е с практическа работа с бази данни, може да разкаже друга история. Въпрос премахне двусмислието изчезва, в зависимост от начина, по който сървърът на базата данни изпълнява разбор, създаване на нишка и сортиране, които се изпълняват по време на операцията за свързване.

InterBase е снизходителен към отклонения от недвусмислени синтактични връзки - понякога с нещастни резултати. Ако мигрирате съществуващия код на вашите приложения, работещи с на InterBase, не се тревожете SQL изключения, които ще дадат Firebird през първите заявки за още една проба със съединенията. Тя ще ви покаже местата в кода си, където можехме заявки, които могат да се върнат неправилни резултати.

Firebird няма да приема заявки за свързване, които съдържат препратки към колоните, които нямат пълна маса квалификант. Qualifier маса може да бъде идентификатор маса или псевдоним на маса. От версия 1.5 се смесват ги недопустими. Ако използвате версия 1.0, да бъде в съответствие, ако искате да избегнете преписването на кода в прехода към новата версия.

На предишните примери използвате таблица идентификатори. Използването псевдоними маси по-елегантно и компактно, както и за някои искания (вж. Раздел ". Риентри съединение") е по избор.

трапезни псевдоними

Ако името на таблицата е дълга или объркващо, или ако има много маси, които използват настолни псевдоними би било полезно (и в някои случаи е необходимо) за операторите яснота. поискване манипулатор интерпретира псевдонимът на масата като синоним на една маса, която е псевдоним. Alias ​​маси, необходими в исканията, които формират множество потоци от една и съща маса.

TIP. база данни диалект 3 Базата данни, която беше създадена с използването на ограничените идентификатори (разделени идентификатори), в съчетание с малки или смесени регистри в именуването на обекти и / или с помощта на "грешния символ", ще се записват може да стане доста досадно, често генериране на грешка, ако не използвате псевдоними.

Псевдоним може да се използва навсякъде, където се предполага да се посочи името на таблицата, като квалификант; имената на всички таблици трябва да бъдат заменени с псевдоними. Смесване идентификатор маса с псевдоними в една и съща заявка ще предизвика изключение в Firebird 1.5 и бъдещите версии.

Следващият пример използва таблица ID:

И S.SALESMAN_ID = '44'

Приемливо име на таблица псевдоним

Използвайте някой низ до 31 знака, които са валидни за име на метаданни (т.е.. Д. букви и цифри в ASCII в диапазона от 35-38, 48-57, 64-90 и 97-122). Spaces, диакритични знаци, имена, затворени в кавички и имена, започващи с номера, не са разрешени.

вътрешен показалка

Фиг. 22.5. Вътрешна курсор за свързване на две маси

риентри връзки

условия дизайн понякога изисква образуването на комбиниран набор от две или повече потоци, които идват от същата таблица. Често маса проектирана с йерархична или дървовидна структура, където всеки ред в таблицата е потомък на родителя е логично в същата таблица. Първичният ключ на таблицата показва нивото на потомък възел на дървото, а външен ключ колоната съхранява ключова майка, която се отнася до основен ключ стойност в друг ред.

Заявка за "изравняване" родител-дете изисква съединение, което премахва един поток за родителите, а другият - за потомците на една и съща маса. Обичайният срок за това - отнасящи се до съединение. морфологично съединение Терминът входящ е по-подходяща, т. К. входящ има други видове искания, които не използват съединения. По-късно в тази глава в раздела. "Подзаявки" говори и за други видове риентри искания.

Бърз за циркулационните връзки

За да изпълните входящ връзки сървърът поддържа един вътрешен курсор за всеки поток в рамките на изображението една таблица. Концептуално, той интерпретира контекста на двата курсора, сякаш те са отделни таблици. В тази ситуация, синтаксиса на препратки към масата задължително използват псевдоними, за да се прави разлика между двете курсори потоци.

В следващия пример, всеки организационна единица се съхранява заедно с идентификатор родител, който сочи към първичния ключ на ръководните й звена. Следната заявка третира единица и родителя, като че ли те са две таблици:

D1.DESCRIPTION AS ОТДЕЛ,

Подкрепете проекта - споделете линка, благодаря!