Získání dat z více tabulek s SQL Internal Joins

Vnitřní spoje vrátí informace, které se zobrazují ve dvou nebo více databázích

Vnitřní spojení jsou nejčastěji používané spojení v SQL. Vrací pouze informace, které existují ve dvou nebo více databázových tabulkách. Podmínka spojení určuje, které záznamy jsou spárovány dohromady a je zadán v klauzuli WHERE. Pokud například potřebujete seznam zápasů s řidičem / vozidlem, ve kterých jsou vozidlo i řidič umístěné ve stejném městě, provede tento dotaz SQL tento úkol:

SELECT příjmení, jméno, značka FROM ovladače, vozidla WHERE drivers.location = vehicles.location

Zde jsou výsledky:

jméno příjmení
----------- ------------ ----
Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990MT

Všimněte si, že výsledky jsou přesně to, co bylo požadováno. Dotaz lze dále upřesnit zadáním dalších kritérií v klauzuli WHERE. Předpokládejme, že původní dotaz odpovídá ovladačům vozidlům, které nemají oprávnění k řízení (řidiči nákladních automobilů na auta a naopak). Následující dotaz můžete použít k vyřešení tohoto problému:

SELECT jméno, příjmení, značka, vehicles.class FROM ovladače, vozidla WHERE drivers.location = vehicles.location AND drivers.class = vehicles.class

Tento příklad určuje zdrojovou tabulku pro atribut třídy v klauzuli SELECT, protože třída je nejednoznačná - objevuje se v obou tabulkách. Kód by obvykle určoval, který sloupec tabulky by měl být zahrnut do výsledků dotazu. V tomto případě to nemá žádný rozdíl, protože sloupce jsou totožné a jsou spojeny pomocí equijoin. Pokud by však sloupce obsahovaly různá data, bylo by toto rozlišení zásadní. Zde jsou výsledky tohoto dotazu:

příjmení jméno první třídy tagů
---------- ------------ ---- ------
Baker Roland H122JM auto
Smythe Michael D824HA Truck
Jacobs Abraham J291QR auto

Chybějící řádky spojily Michaela Smytheho s vozem a Abraham Jacobs s kamionem, vozy, které neměly oprávnění řídit.

Pro spojování dat z tří nebo více tabulek můžete také použít vnitřní spojky .