Sloučit dvě tabulky v SQL

Sloucit Dve Tabulky V Sql



V SQL se slučování tabulek týká procesu slučování dat ze dvou samostatných tabulek v dané databázi do jediné jednotky na základě společného sloupce nebo kritérií. Ano, pokud to zní jako stůl, je to přesně ono.

Spojení tabulek nebo sloučení tabulek je známá funkce relačních databází a je neuvěřitelně výkonná. Umožňuje nám konsolidovat informace z více zdrojů a vytvářet ucelenější a smysluplnější přehledy dat. Umožňuje také, aby byly relační databáze vysoce škálovatelné (ne flexibilní), protože data můžeme rozdělit na menší, spravovatelné části, na které se můžeme později odkazovat.

V tomto tutoriálu probereme základy spojování tabulek nebo slučování tabulek. Podívejme se na ukázky tabulek z reálného světa, abychom upevnili naše znalosti.







Vzorová tabulka

Než se pustíme do světa spojování tabulek, nastavíme si základní tabulky, které použijeme pro demonstrační účely.



Zvažte dvě tabulky, které obsahují informace o zaměstnancích a mzdách, jak je uvedeno v následujících příkladech dotazů:



CREATE TABLE zaměstnanci (

zaměstnanec_id INT AUTO_INCREMENT PRIMÁRNÍ KLÍČ,

jméno VARCHAR( padesáti ),

příjmení VARCHAR( padesáti ),

oddělení VARCHAR( padesáti )

);

Poté můžeme vložit ukázková data do tabulky zaměstnance, jak je znázorněno v následujících dotazech:





INSERT INTO zaměstnanci (jméno, příjmení, oddělení) HODNOTY

( 'Alice' , 'Kovář' , 'Lidské zdroje' ),

( 'Bob' , 'Johnson' , 'Marketing' ),

( 'Kája' , 'Wilson' , 'Finance' ),

( 'David' , 'Hnědý' , 'Odbyt' ),

( 'Eva' , 'Davis' , 'Inženýrství' );

Pokračujme a vytvořte novou tabulku pro uložení informací o platu následovně:

VYTVOŘIT TABULKU platů (

pay_id INT AUTO_INCREMENT PRIMÁRNÍ KLÍČ,

zaměstnanec_id INT,

plat DECIMAL( 10 , 2 ),

počáteční_datum DATE,

end_date DATE,

CIZÍ KLÍČ (id_employee) REFERENCE zaměstnanci (id_zamestnavatele)

);

Přidejte vložená ukázková data do tabulky následovně:



INSERT INTO platy (id_employee_id, plat, počáteční_datum, koncové_datum) HODNOTY
( 1 , 60000,00 , '2023-01-01' , '2023-12-31' ),
( 2 , 55 000,00 , '2023-01-01' , '2023-12-31' ),
( 3 , 65 000,00 , '2023-01-01' , '2023-12-31' ),
( 4 , 58 000,00 , '2023-01-01' , '2023-12-31' ),
( 5 , 70000,00 , '2023-01-01' , '2023-12-31' );

To by nám mělo poskytnout dvě tabulky, které nám mohou pomoci demonstrovat koncept spojení/sloučení tabulek v SQL.

Sloučení tabulek SQL/spojení tabulek

Pojďme prozkoumat různé typy sloučení tabulek, které můžeme udělat. Ty základní probereme, až postoupíme k pokročilejším.

VNITŘNÍ SPOJENÍ

Prvním a nejběžnějším typem spojení tabulek v SQL je INNER JOIN. INNER JOIN nám umožňuje kombinovat řádky ze dvou tabulek na základě konkrétní podmínky. Tento typ pak vrátí pouze řádky, kde je mezi tabulkami shoda.

Vezměme si jako příklady tabulky „zaměstnanci“ a „platy“, které jsme vytvořili dříve. K provedení INNER JOIN v SQL používáme klauzuli INNER JOIN takto:

VYBRAT

e.employee_id,

e.first_name,

e.last_name,

e.oddělení,

s.plat

Z

zaměstnanci e

Mzdy INNER JOIN s NA

e.employee_id = s.employee_id;

V uvedeném příkladu dotazu používáme INNER JOIN ke sloučení tabulek „zaměstnanci“ a „platy“ ve sloupci „id_zaměstnance“, který existuje v obou tabulkách. Výsledná sada obsahuje pouze odpovídající řádky z obou tabulek.

Příklad výstupu je následující:

LEVÁ VNĚJŠÍ SPOJENÍ

Máme také LEFT OUTER JOIN, který kombinuje všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky. Pokud v pravé tabulce není žádná shoda, spojení použije hodnotu NULL.

VYBRAT

e.employee_id,

e.first_name,

e.last_name,

e.oddělení,

s.plat

Z

zaměstnanci e

LEFT JOIN platy s

NA

e.employee_id = s.employee_id;

V tomto příkladu provedeme LEFT OUTER JOIN ke sloučení tabulek „zaměstnanci“ a „platy“. Jsou zahrnuty všechny řádky z tabulky „zaměstnanci“ a jsou přidány odpovídající řádky z tabulky „platy“. Hodnoty NULL jsou však zahrnuty ve sloupci „plat“ pro neodpovídající řádky.

SQL UNION

Další metodou spojování tabulek v SQL je použití operátoru UNION. Tento operátor nám umožňuje spojit výsledky dvou nebo více příkazů select do jediné sady výsledků.

Aby bylo možné sjednocení použít, musí mít sloupce v každém příkazu SELECT stejný datový typ.

Příklad je následující:

SELECT zaměstnanec_id , jméno , příjmení , oddělení , NULL AS plat

OD zaměstnanců e

SVAZ

SELECT zaměstnanec_id , NULL AS jméno , NULL AS příjmení , NULL AS oddělení , plat

Z platů s ;

V tomto případě UNION sloučí tabulky „zaměstnanci“ a „platy“. Poté vytvoříme sloupce NULL v každém příkazu SELECT, abychom zajistili, že obě tabulky budou mít podobný počet sloupců.

SPOJE jsou technicky běžné, ale mohou být užitečné zejména tehdy, když potřebujete sloučit tabulky s různými strukturami.

Závěr

V tomto tutoriálu jsme prozkoumali základy spojování/slučování dvou tabulek do jedné sady výsledků. Je dobré mít na paměti, že v tomto příspěvku je diskutováno mnohem více pokročilejších spojení.