Spojte dve tabuľky do jednej virtuálnej tabuľky pomocou funkcie JOIN

Predbežná poznámka

syntax

  • Čiarková verzia:
  • Najjednoduchšia forma VNÚTORNÉHO PRIPOJENIA
  • Viacnásobný odkaz:
  • Namiesto VNÚTORNE možno použiť aj jedno z nasledujúcich kľúčových slov:
  • Namiesto operátora AND je možné použiť operátor OR, je možné zadať viac ako dva porovnávacie výrazy a spojiť operáciu AND a operátor OR.
  • Tabuľku je možné určiť aj dvakrát, jedna hovorí o jednej Prepojenie samo, pretože riadky v tabuľke súvisia s ostatnými riadkami v tabuľke. Okrem verzie s čiarkami je pre prehľadnosť stĺpcov požadovaný aspoň jeden alias.

Príklady

  1. Táto verzia s čiarkami kombinuje každý riadok tabuľky ARTIKEL s každým riadkom tabuľky PREDAJ a poskytuje výstup výsledku 4 * 9 = 36 riadkov v plnom rozsahu. Ak porovnáme dva stĺpce A.A_NR a U.A_NR, je zrejmé, že predajom sú vo väčšine prípadov priradené články, ktoré sa líšia od článku uvedeného v predaji. Týchto (36 - 9) = 27 výsledkov nemá zmysel. Podmienka filtra uvedená v klauzule ON v nasledujúcej klauzule JOIN odstráni tieto dátové záznamy.
  2. Toto je najjednoduchšia a najčastejšie používaná forma SPOJENIA. Stĺpec A. A_NR je tiež primárnym kľúčom tabuľky ARTIKEL; pre článok môže byť niekoľko objednávok, t. J. Riadky v tabuľke PREDAJ. Všetky riadky, v ktorých sa dva stĺpce A.A_NR a U.A_NR nezhodujú, sú odstránené z verzie s čiarkami uvedenou vyššie.

Tento dopyt najskôr porovnáva všetky tie riadky, ktoré odkazujú na rovnaký dátum a rovnaký článok. Pretože treťou podmienkou je skontrolovať, či je stĺpec A_STUECK odlišný, najskôr sa odstránia všetky kombinácie dátumu a článku, ktoré odkazujú na ten istý riadok. To isté by však splnilo test U1.UMSATZ_NR <> U1.UMSATZ_NR. Skutočne použitý test však okrem toho odstráni všetky kombinácie dátumu a výrobku, pre ktoré bol výrobok niekoľkokrát predaný, s rovnakým počtom kusov; výstupom budú iba tie kombinácie, pri ktorých bol výrobok predaný v minimálne dvoch rôznych počtoch kusov za jeden deň. Pretože každá kombinácia riadkov, ktorá spĺňa tieto podmienky, je splnená aj pri zámene dvoch riadkov, podmienku <> je možné nahradiť aj hodnotou U2.Value_No, takže dňa 25.06.1999 sa vydá iba položka 11, ktorá sa predala dvakrát dvadsaťkrát. Všetko vo všetkom:

jednej

Poznámky

  1. Ak prepájate tabuľky, mali by ste zvyčajne použiť niektorú z metód JOIN. Mali by ste sa vyhnúť najmä „starej“ technike, ktorá využíva hranatú verziu a posúva klauzulu ON do stavu WHERE. Porovnajte dve nasledujúce reprezentácie: s V prvej verzii, ktorú nie je možné použiť, je podmienka prepojenia dvoch tabuliek zmiešaná s podmienkou, ktorá vyberie niekoľko riadkov. Druhá verzia však oddeľuje prepojenie tabuliek od zmenšenia stĺpcov. Spravidla sa najskôr vykonajú všetky podmienky WHERE, ktoré znižujú počet riadkov; JOIN sa vytvorí iba pomocou zostávajúceho počtu riadkov.
  2. ĽAVÉ a PRAVÉ spojenia sú navzájom symetrické. Nasledujúce dva príkazy na určenie položiek, ktoré sa nikdy nepredali, by preto mali vygenerovať rovnaký vývojový diagram (pridať položku, ktorá sa nikdy nepredala, ako je uvedené vyššie): a OUTER JOIN kombinuje LEFT/RIGHT a akceptuje zhodné tabuľky aj nulové hodnoty z oboch tabuliek.
  3. Ľavé alebo pravé spojovacie konštrukty sú povinné, ak tabuľka obsahuje odkaz na voliteľnú hraničnú tabuľku. Klasický príklad priraďuje tituly osobám, tituly (Dr., Dr.med, Prof. Dr.) sa ukladajú do tabuľky rezerv, tabuľka osôb obsahuje stĺpec s ID tabuľky nadpisov. Ak existujú ľudia bez názvu, je možné v tabuľke okrajov vytvoriť záznam bez textu a na prepojenie použiť VNÚTORNÉ SPOJENIE, alebo takýto záznam chýba. To znamená, že zodpovedajúca bunka v tabuľke osôb je prázdna, takže ak sa majú nájsť všetky osoby, musí sa vytvoriť spojnica zľava/doprava z hlavnej tabuľky do tabuľky okrajov.

Príklad pre MS-SqlServer: CoalEsce vráti prvý výraz v zozname, ktorý sa líši od nuly. Ak názov existuje, bude mať výstup ako oddeľovač medzeru, inak bude k predchádzajúcemu výstupu pridaný prázdny reťazec pozostávajúci z priezviska, čiarky a mena.