SQL | Ustanovení POUŽÍVÁNÍ
Pokud má několik sloupců stejné názvy, ale datové typy se neshodují, lze klauzuli NATURAL JOIN upravit pomocí POUŽITÍM klauzule k určení sloupců, které by měly být použity pro EQUIJOIN.
- Klauzule USING se používá ke spárování pouze jednoho sloupce, pokud se shoduje více než jeden sloupec.
- Klauzule NATURAL JOIN a USING se vzájemně vylučují.
- V odkazovaných sloupcích by neměl mít kvalifikátor (název tabulky nebo alias).
- NATURAL JOIN používá všechny sloupce s odpovídajícími názvy a datovými typy ke spojení tabulek. Klauzuli USING lze použít k určení pouze těch sloupců, které by měly být použity pro EQUIJOIN.
PŘÍKLADY:
Níže uvedené příkazy použijeme na následující základní tabulky:
Tabulka zaměstnanců
Stůl oddělení
DOTAZ 1: Napište SQL dotaz pro nalezení pracovní polohy zaměstnanců. Uveďte také příslušné zaměstnanecké_id a příjmení?
Input : SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.LOCATION_ID FROM Employees e JOIN Departments d USING(DEPARTMENT_ID); Output :
Vysvětlení: Zobrazený příklad spojuje sloupec DEPARTMENT_ID ve sloupcích EMPLOYEES a DEPARTMENTS
tabulky, a tak ukazuje místo, kde zaměstnanec pracuje.
Níže uvedené příkazy použijeme na následující základní tabulky:
Tabulka zemí
Tabulka umístění
DOTAZ 2: Napište SQL dotaz, abyste našli location_id, street_address, postal_code a jejich příslušný název země?
Input : SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id); Output :
Vysvětlení: Zobrazený příklad spojuje sloupec COUNTRY_ID ve sloupcích LOCATIONS a COUNTRIES
tabulky, a tím zobrazí požadované detaily.
POZNÁMKA: Když použijeme klauzuli USING v příkazu spojení, sloupec spojení není kvalifikován s aliasem tabulky. Nedělejte alias, i když je stejný sloupec použit jinde v příkazu SQL:
Příklad:
Input: SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id) WHERE c.country_id'IT'; Output:
Vysvětlení: Vzhledem k tomu, že sloupec v klauzuli USING je znovu použit v klauzuli WHERE, vyhodí uživateli chybu.