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
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
Tabulka: kontakty
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:
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:
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:
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>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 ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' 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:
5000;>