JOIN - Обединете нормализираните таблици отново за заявка
Предварителна забележка
синтаксис
- Версия със запетая:
- Най-проста форма на ВЪТРЕШНОТО ПРИСЪЕДИНЯВАНЕ
- Множество връзки:
- Вместо INNER може да се използва и една от следните ключови думи:
- ИЛИ може да се използва вместо оператора И, могат да се посочат повече от два израза за сравнение и И и ИЛИ да се комбинират.
- Таблица може да бъде посочена и два пъти, като се говори за една Самосвързващи се, тъй като редовете в таблицата са свързани с други редове в таблицата. Освен версията със запетая, за таблица е необходимо поне едно име на псевдоним, за да се опишат ясно колоните.
Примери
- Тази версия със запетая комбинира всеки ред от таблицата ARTIKEL с всеки ред от таблицата SALES и извежда резултата от 4 * 9 = 36 реда изцяло. Ако сравните двете колони A.A_NR и U.A_NR, ще забележите, че на продажбите в повечето случаи се присвояват артикули, които са различни от статията, спомената в продажбите. Тези (36 - 9) = 27 резултата са безсмислени. Условието на филтъра, посочено в клаузата ON в следващата клауза JOIN, премахва тези записи на данни.
- Това е най-простата и често използвана форма на JOIN. Колоната A. A_NR също е първичният ключ на таблицата ARTIKEL; може да има няколко поръчки за статия, т.е. редове в таблицата ПРОДАЖБИ. Всички редове, в които двете колони A.A_NR и U.A_NR не съвпадат, се премахват от версията със запетая, дадена по-горе.
Тази заявка първо съвпада с всички онези редове помежду си, които се отнасят до една и съща дата и една и съща статия. Тъй като третото условие е да проверите дали колоната A_STUECK е различна, първо се премахват всички комбинации от дата и статия, които се отнасят до един и същ ред. Същото нещо обаче би изпълнило теста U1.UMSATZ_NR <> U1.UMSATZ_NR. Тестът, който всъщност е използван, обаче допълнително премахва всички комбинации от дата и артикул, за които артикулът е продаван няколко пъти със същия брой парчета; извеждат се само тези комбинации, при които артикулът е бил продаден в поне два различни броя парчета за един ден. Тъй като всяка комбинация от редове, които отговарят на тези условия, се изпълнява и ако двата реда се разменят, условието <> може да бъде заменено и с U2.Value_No, така че само елемент 11 е издаден на 25.06.1999 г., който е бил продаден два пъти двадесет пъти. Всичко на всичко:
Забележки
- Ако свързвате таблици, обикновено трябва да използвате един от методите JOIN. По-специално трябва да се избягва „старата“ техника, която използва скобената версия и премества клаузата ON в условието WHERE. Сравнете двете следните представления: с В първата версия, която не може да се използва, условието за свързване на двете таблици се смесва с условието, което избира няколко реда. Втората версия обаче разделя свързването на таблиците от намаляването на колоните. Като правило всички WHERE условия, които намаляват броя на редовете, се изпълняват първо; JOIN се създава само с помощта на останалия брой редове.
- ЛЕВОТО и ДЯСНОТО съединение са симетрични помежду си. Следователно следните две изявления за определяне на никога продадените артикули трябва да генерират една и съща блок-схема (добавете елемент, който никога не се продава, както по-горе): и OUTER JOIN комбинира НАЛЯВО/НАДЯСНО и приема както съвпадащи редове, така и нулеви стойности от двете таблици.
- Конструкциите за ляво или дясно присъединяване са задължителни, ако таблица съдържа връзка към незадължителна гранична таблица. Класически пример присвоява заглавия на лица, заглавията (Dr., Dr.med, Prof.Dr.) се съхраняват в таблица на полета, таблицата на хората съдържа колона с идентификатора на таблицата със заглавия. Ако има хора без заглавие, в таблицата на полетата може да се създаде запис без текст и за свързване може да се използва ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ или такъв запис липсва. Това означава, че съответната клетка в таблицата на лицата е празна, така че ляво/дясно съединение трябва да се формира от основната таблица до таблицата на ръба, ако трябва да бъдат намерени всички лица.
Пример за MS-SqlServer: CoalEsce връща първия израз в списъка, който е различен от нула. Ако заглавие съществува, то ще бъде изведено с интервал като разделител, в противен случай празен низ ще бъде добавен към предишния изход, състоящ се от фамилно име, запетая и собствено име.
- Няколко трансформатора или един
- Pamorelin® LA 22,5 mg прах и разтворител за инжекционна суспензия с удължено освобождаване -
- RE604 тръба в еднокраен усилвател на мощност - експеримент
- Комбинирайте обувки Какъв вид обувки можете да носите с мини пола?
- Пародонтална болест Бързо до успех с доказана терапия