Комбинирајте две табели во една виртуелна табела со JOIN

Прелиминарна забелешка

синтакса

  • Верзија за запирка:
  • Наједноставна форма на внатрешното придружување
  • Повеќекратна врска:
  • Наместо ВНАТРЕШЕН, може да се користи и еден од следниве клучни зборови:
  • ИЛИ може да се користи наместо операторот AND, може да се наведат повеќе од два изрази за споредување и AND и OR може да се комбинираат.
  • Табела исто така може да се специфицира двапати, еден зборува за една Самоповрзување, бидејќи редовите во табелата се поврзани со другите редови во табелата. Освен верзијата со запирка, потребно е барем едно име алијас за табелата со цел јасно да се опишат колоните.

Примери

  1. Оваа верзија со запирка ја комбинира секоја линија на табелата ARTIKEL со секоја линија на табелата SALES и го дава резултатот од 4 * 9 = 36 линии во целост. Ако се споредат двете колони A.A_NR и U.A_NR, се забележува дека продажбата во повеќето случаи се доделува на статии што се разликуваат од написот споменат во продажбата. Овие (36 - 9) = 27 резултати се бесмислени. Состојбата на филтерот наведена во клаузулата ON во следната клаузула JOIN ги отстранува овие записи за податоци.
  2. Ова е наједноставната и најчесто користената форма на JOIN. Колоната A. A_NR е исто така примарен клуч на табелата ARTIKEL; може да има неколку нарачки за напис, т.е. редови во табелата ПРОДАБА. Сите линии во кои не се совпаѓаат двете колони A.A_NR и U.A_NR се отстранети од горенаведената верзија со запирка.

Ова барање прво одговара на сите редови едни со други што се однесуваат на истиот датум и истиот напис. Бидејќи третиот услов е да се провери дали колоната A_STUECK е различна, сите комбинации на датум и напис што се однесуваат на истиот ред прво се отстранети. Истата работа, сепак, ќе го исполни тестот U1.UMSATZ_NR <> U1.UMSATZ_NR. Тестот, всушност, користен, дополнително ги отстранува сите комбинации на датум и напис за кои е продаден производот неколку пати со ист број парчиња; се излегуваат само оние комбинации во кои што е продаден написот во најмалку два различни броја парчиња на еден ден. Бидејќи секоја комбинација од редови што ги исполнува овие услови е исполнета и ако се заменат двете редови, условот <> исто така може да се замени со U2.Вредност_ Не, така што само ставката 11 е издадена на 25.06.1999 година, која беше продадена двапати дваесет пати. Се на се:

виртуелна

Забелешки

  1. Ако поврзете табели, обично треба да користите еден од ПРИДРУНИТЕ методи. Особено, треба да се избегнува „старата“ техника, која користи заградена верзија и ја поместува клаузулата ON во состојбата КАДЕ. Споредете ги следниве претстави: со Во првата верзија, која не може да се користи, условот за поврзување на двете табели се меша со состојбата што избира неколку редови. Втората верзија, сепак, го одделува поврзувањето на табелите од намалувањето на колоните. Како по правило, прво се извршуваат сите КАДЕ услови кои го намалуваат бројот на линии; JOIN се креира само со користење на преостанатиот број на линии.
  2. ЛЕВО и ДЕСНО спојување се симетрични едни на други. Следниве две изјави за одредување на артиклите што никогаш не биле продадени треба да генерираат иста графикон на проток (додадете ставка што никогаш не била продадена како погоре): и OUTER JOIN комбинира ЛЕВО/ДЕСНО и ги прифаќа и соодветните редови и нула вредностите од двете табели.
  3. Конструкциите за лево или десно спојување се задолжителни ако табелата содржи врска до изборната табела за граници. Класичен пример им доделува титули на лица, насловите (Dr., Dr.med, Prof. Dr.) се чуваат во табела со маргина, табелата за лица содржи колона со ID на табелата за наслови. Ако има луѓе без наслов, или запис без текст може да се креира во табелата со маргина и за поврзување може да се користи ВНАТРЕШНА ПРИЈАВА, или недостасува таков запис. Ова значи дека соодветната ќелија во табелата за лица е празна, така што левото/десното спојување мора да се формира од главната табела до работ на масата ако треба да се најдат сите лица.

Пример за MS-SqlServer: CoalEsce го враќа првиот израз во списокот кој се разликува од нула. Ако постои наслов, тој ќе биде излезен со празно место како сепаратор, во спротивно ќе се додаде празна низа на претходниот излез составена од презиме, запирка и име.