logo

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

MySQL CROSS JOIN se používá ke kombinaci všech možností dvou nebo více tabulek a vrací výsledek, který obsahuje každý řádek ze všech přispívajících tabulek. CROSS JOIN je také známý jako CARTESIAN JOIN, který poskytuje kartézský součin všech přidružených tabulek. Kartézský součin lze vysvětlit jako všechny řádky v první tabulce vynásobené všemi řádky ve druhé tabulce. Podobá se vnitřnímu spojení, kde podmínka spojení není u této klauzule k dispozici.

Můžeme to pochopit pomocí následující vizuální reprezentace, kde CROSS JOIN vrací všechny záznamy z tabulky1 a tabulky2 a každý řádek je kombinací řádků obou tabulek.

jak otevřít skryté aplikace na android
KŘÍŽOVÉ PŘIPOJENÍ k MySQL

Syntaxe MySQL CROSS JOIN

Klíčové slovo CROSS JOIN se vždy používá s příkazem SELECT a musí být zapsáno za klauzuli FROM. Následující syntaxe načte všechny záznamy z obou spojovacích tabulek:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

Ve výše uvedené syntaxi jsou seznamy sloupců název sloupce nebo pole, které chcete vrátit, a tabulka1 a tabulka2 je název tabulky, ze které načítáte záznamy.

Příklad MySQL CROSS JOIN

Vezměme si několik příkladů, abychom pochopili fungování klauzule Left Join nebo Left Outer Join:

Klauzule CROSS JOIN pro spojení dvou tabulek

Zde vytvoříme dvě tabulky 'zákazníci' a 'kontakty' který obsahuje následující údaje:

Tabulka: zákazníci

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

Tabulka: kontakty

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

Chcete-li načíst všechny záznamy z obou tabulek, proveďte následující dotaz:

 SELECT * FROM customers CROSS JOIN contacts; 

Po úspěšném provedení dotazu poskytne následující výstup:

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

Po provedení příkazu CROSS JOIN zjistíte, že zobrazuje 42 řádků. To znamená, že sedm řádků z tabulky zákazníků se vynásobí šesti řádky z tabulky kontaktů.

POZNÁMKA: Abyste se vyhnuli tomu, že se sloupce opakují dvakrát, doporučujeme místo příkazu SELECT * používat názvy jednotlivých sloupců.

Problém s nejednoznačnými sloupci v MySQL CROSS JOIN

Někdy potřebujeme načíst vybrané záznamy sloupců z více tabulek. Tyto tabulky mohou obsahovat některé názvy sloupců podobné. V takovém případě příkaz MySQL CROSS JOIN vyvolá chybu: název sloupce je nejednoznačný. Znamená to, že název sloupce je přítomen v obou tabulkách a MySQL je zmatená, který sloupec chcete zobrazit. Následující příklady to vysvětlují jasněji:

 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

Výše uvedený CROSS JOIN vyvolá chybu, jak je uvedeno na obrázku níže:

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

Tento problém lze vyřešit použitím názvu tabulky před názvem sloupce. Výše uvedený dotaz lze přepsat takto:

 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

Po provedení výše uvedeného dotazu získáme následující výstup:

KŘÍŽOVÉ PŘIPOJENÍ k MySQL

VLEVO JOIN s klauzulí WHERE

Klauzule WHERE se používá k vrácení filtr výsledek z tabulky. Následující příklad to ilustruje s klauzulí CROSS JOIN:

přejmenovat linuxovou složku
 SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price&gt;1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named &apos; <strong>customers&apos;</strong> and &apos; <strong>orders&apos;</strong> . Let us create one more table and name it as &apos; <strong>contacts&apos; that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>

Po úspěšném provedení výše uvedeného dotazu poskytne následující výstup:

KŘÍŽOVÉ PŘIPOJENÍ k MySQL