Příkaz CROSS JOIN v SQL souží ke spojení 2 tabulek v relační databázi. Jeho výsledkem je kartézský součin => všechny kombinace levé (A) a pravé (B) tabulky.
Syntaxe:
SELECT sloupce
FROM Tabulka_A CROSS JOIN Tabulka_B
/*Tabulka A = levá; Tabulka B = pravá*/
Příklad CROSS JOIN:
Tento typ JOINu si můžeme ukázat na příkladu. Vyrobíme si 2 tabulky jako na obrázku výše a následně na ně aplikujeme tento typ joinu:
/*Vytvoríme obe tabulky*/
CREATE TABLE Prvni_tabulka (ID INT IDENTITY(1,1), Hodnota_z_Prvni_tabulky VARCHAR(100));
CREATE TABLE Druha_tabulka (ID INT IDENTITY(1,1), Hodnota_z_druhe_tabulky VARCHAR(100));
/*Naplníme tabulky*/
INSERT INTO Prvni_tabulka (Hodnota_z_Prvni_tabulky)
VALUES ('Jedna'), ('Dve');
INSERT INTO Druha_tabulka (Hodnota_z_druhe_tabulky)
VALUES ('Jedna'), ('Dve'), ('Tri'), ('Ctyri'), ('Pet');
/*Výsledný skript*/
SELECT *
FROM Prvni_tabulka
CROSS JOIN Druha_tabulka;
Výsledkem je kartézský součin “každý s každým” a proto budeme očekávat 10 záznamů (2*5 záznamů):
SELECT sloupce
FROM Tabulka_A CROSS JOIN Tabulka_B
ON TabulkaA.sloupec=TabulkaB.sloupec
jste si jist tim poslednim radkem? dle meho cross join provede kartezky soucin vsech zaznamu, bez ohledu na hodnoty a radek ktery by specifikoval sloupce pro soucin se nepouziva
Jo potvrzuju, byla tam chyba, sorry
Tohle bylo první, co jsem udělal, když jsem se CROSS JOIN učil 🙂 … ON col1 = col2