Query Language 1в 8
Влез като студент, за да получат достъп до училището
Query Language 1C 8.3 за начинаещи: Връзка
Съединенията в заявки
Connection - един от най-важните и необходими действия, извършвани от системи за управление на релационни бази данни.
Съединенията се използват за сравнение на аудио низ от реда от таблицата в друга таблица.
нека да решим следния проблем да реализира необходимостта от връзки.
Имаме база има референтни клиенти:
И Асоциацията на справка:
Нашата задача е да се съберат на любимите си клиенти за асоцииране, на базата на цвят.
По този начин за любимия асоциация Наташа е трева, като любимият й цвят е зелен. И за Петър - слънцето. Виждате оценката версия урок, пълни се предлагат уроци тук.
За Андрю не са налице подходяща смес, като любимият му цвят е червен, а червеният асоциации, базирани там.
Ние ще решим проблема постепенно.
На първо място, на нуждите на всички клиенти и любимите си цветове:
Сега ние по някакъв начин да съчетае в първа и втора таблица. За да направите това, да поиска информация от две маси. Към този списък с двете плочи в ОТ раздел, разделени със запетаи. Виждате оценката версия урок, пълни се предлагат уроци тук. Секция посочваме SELECT полета от двете таблици:
Ако се опитаме да изпълните тази молба, ще получите съобщение за грешка:
Причина за грешката е, че полето Име веднага възниква и в двете таблици (клиенти и асоциации) и системата просто не знае точно кои поле на таблицата се има предвид.
За да се премахне такива неяснота в проба от повече от една маса предприемат, за да се посочи пълните имена на полета. Пълното име поле включва напълно определено име на маса (например Spravochnik.Klienty) и името на полето (напр Name).
По този начин, пълното име на името на полето от таблицата с клиентите ще Spravochnik.Klienty.Naimenovanie.
Пълно име на поле Име на Асоциацията на масата ще Spravochnik.Assotsiatsii.Naimenovanie.
кръстосана връзка
Препишете предишната заявка с трите имена на полета:
Ние току-що направи кръстосана връзка между две таблици. Обърнете внимание на начина, по който се генерира в резултат:
вътрешна връзка
Очевидно е, че в резултат на кръстосаните свързват двете таблици не е решение на нашия проблем. Ние не се нуждаем от всички архиви на кръстосани връзки, но само тези, при които LyubimyyTsvet поле и цвят имат една и съща стойност:
За получаване на тези записи се добавят към предишния раздел искане, когато:
Това е, което ви трябва - ние решихме задачата!
В последния искане, ние използвахме кръстосана връзка с допълнителното условие (в секцията, където). Виждате оценката версия урок, пълни се предлагат уроци тук. Такова съединение се нарича вътрешната.
Има и друг правописа на един и същ вътрешен връзка:
Сравнете това и предишната заявка. Те са абсолютно еднакви по отношение на платформата, просто имат различен синтаксис. И това и предишни искания съдържат вътрешна присъединят масата за клиентите с таблицата на Асоциацията на полета LyubimyyTsvet и цвета съответно.
лявото присъединят
Обърнете внимание на факта, че той пропусна Андрю в резултат на вътрешната връзка. И всичко това, защото любимият му цвят е червен, а червените асоциации в нашата база данни не е на всички.
Оказва се, че Андрю с червената си просто не можах да намеря чифт размери таблици.
Препишете заявка, така че да доведе до спад в броя на записите от първата таблица, за които не е имало един чифт от втората таблица (в този случай, Андрю):
Такова съединение се нарича лявата връзка.
Performan лявата е съединение: всички записи от вътрешната връзка PLUS всички записи от първата таблица. не попадат в интериора съединение (за които не е имало двойки).
Дясната връзката
Но нека се върнем отново към вътрешните връзки:
Имайте предвид, че в резултат на вътрешната връзка не съдържа сдружение на бял сняг, тъй като не е имало нито един клиент, който има любим цвят ще е бяло.
Препишете заявка, така че да доведе до спад в броя на записите от втората таблица, която не е била намерени резултати за всяка двойка от първите маси (в този случай бял сняг):
Такова съединение се нарича право връзка.
Резултатът на правото представлява съединение: всички записи от вътрешната връзка PLUS всички записи от втората таблица. не попадат в интериора съединение (за които не е имало двойки).
пълен съединение
Какво става, ако имаме нужда в резултатния разпадна вътрешната присъединят Андрю и сняг в същото време?
Това ще изисква обединените резултатите от левия и десния връзки. Този тип съединение вече е измислена и се нарича пълна съединение:
В резултат на пълно съединение се състои от: всички записи от вътрешната връзка, наред с всички записи от първата таблица, не попадат в интериорния съединение (за които не е имало двойки) плюс всички записи от втората таблица, не попадат в интериорния съединение (за които не е имало двойки) ,
трапезни псевдоними
Вие се съгласявате, че всички заявки, които пишат за в този урок са доста обемисти. Това се дължи на факта, че ние трябва да посочите трите имена на полета, за да се избегне двусмислие.
За да се намали цялото й име името на таблицата (например Spravochnik.Klienty) е допустимо (и за нивите си) да използват псевдоними.
Нека да пренапише последната заявка, така че формирането на трите имена на полето вместо Spravochnik.Klienty може да използва псевдоним, вместо К. Spravochnik.Assotsiatsii - псевдоним A:
И за да резултатният беше още по-ясно добавите псевдоними полета, които вече сме считани за един от уроците на миналото:
Работа NULL
Погледнете внимателно в резултатите от последната заявка (както и много по-рано в този урок).
Какви са стойностите на полетата и Асоциацията EoTsvet за първото място? Какво можете да кажете за Клиента полета и EgoTsvet за последния ред?
Те са NULL, на която, както знаем, означава липса на всякакви ценности:
И тъй като NULL означава липса на ценности, всеки опит да го изпълни всяка операция (За сравнение, допълнение.) Ще предизвика неопределен база данни поведение, непредвидими грешки.
Затова задължително лечение се счита NULL стойности, когато те могат да възникнат.
При третиране означава, че ние трябва да кажем на нашата молба, че ако едно от полетата ще бъде равна на NULL. в тази област трябва да замени някои други стойност.
В този случай, полетата клиент и на асоциацията, в случай на NULL, ние ще замести празен низ "".
За да се определи, че областта се е NULL ще използва вече познатите ни от предишната функция уроци ESTNULL:
На повърхността (на конзолата за заявки), резултатът не се промени. Ние продължаваме да видите празни полета. Но това е само защото представителствата на низ в NULL и празните полета от всякакъв вид са еднакви и равни на празен низ.
В действителност, тези празни полета не разполагат с NULL (без стойност), сега те имам стойност (празен), с които тя вече е възможно да се работи (извършва операции).
Обърнете внимание на празната стойност и липсата на стойност - са две големи разлики.
Съединение повече от две таблици
Може да се свърже последователно, тъй като много маси.
Да предположим, че трябва да се реши следния проблем. Виждате оценката версия урок, пълни се предлагат уроци тук. Теглене на всички възможни клиенти и техните любими хора асоциации и любимите им храни на базата на любимия си цвят.
За тази цел, свързани в серия от цвета на масата за клиенти, за да таблиците с размери. и след това (полученият резултат) от таблицата за храните: