Ľavé spojenie v MySQL sa používa na dopytovanie záznamov z viacerých tabuliek. Táto klauzula je podobná klauzule Inner Join, ktorú možno použiť s príkazom SELECT bezprostredne za kľúčovým slovom FROM. Keď použijeme klauzulu Left Join, vráti všetky záznamy z prvej tabuľky (na ľavej strane), dokonca ani žiadne zodpovedajúce záznamy z druhej tabuľky (na pravej strane). Ak nenájde žiadny záznam zhody z tabuľky na pravej strane, vráti hodnotu null.
Inými slovami, klauzula Left Join vráti všetky riadky z ľavej tabuľky a zhodné záznamy z pravej tabuľky alebo vráti hodnotu Null, ak sa nenájde žiadny zodpovedajúci záznam. Toto spojenie môže byť tiež nazývané a Ľavý vonkajší spoj doložka. Vonkajšie je teda voliteľné kľúčové slovo na použitie s ľavým spojením.
Môžeme to pochopiť pomocou nasledujúceho vizuálneho znázornenia, kde Left Joins vráti všetky záznamy z ľavej tabuľky a iba zodpovedajúce záznamy z tabuľky na pravej strane:
MySQL LEFT JOIN Syntax
Nasledujúca syntax vysvetľuje klauzulu Left Join na spojenie dvoch alebo viacerých tabuliek:
SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition;
Vo vyššie uvedenej syntaxi stôl 1 je tabuľka na ľavej strane a tabuľka2 je tabuľka na pravej strane. Táto klauzula vráti všetky záznamy z tabuľky1 a zodpovedajúce záznamy z tabuľky2 na základe zadaného pripojiť sa .
Príklad MySQL LEFT JOIN
Uveďme si niekoľko príkladov, aby sme pochopili fungovanie klauzuly Left Join alebo Left Outer Join:
Klauzula LEFT JOIN na spojenie dvoch tabuliek
Tu vytvoríme dve tabuľky ' zákazníkov a ' objednávky' ktorý obsahuje nasledujúce údaje:
Tabuľka: zákazníci
Tabuľka: objednávky
Ak chcete vybrať záznamy z oboch tabuliek, vykonajte nasledujúci dotaz:
SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Po úspešnom vykonaní dotazu poskytne nasledujúci výstup:
java print
MySQL LEFT JOIN s USING Clause
Tabuľka Zákazníci a objednávky majú rovnaký názov stĺpca, ktorým je customer_id. V takom prípade možno na prístup k záznamom použiť aj MySQL Left Join s klauzulou USING. Nasledujúci príkaz vráti ID zákazníka, meno zákazníka, povolanie, cenu a dátum pomocou klauzuly Left Join s kľúčovým slovom USING.
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id);
Vyššie uvedené vyhlásenie poskytne nasledujúci výstup:
MySQL LEFT JOIN s Group By Clause
Ľavé spojenie možno použiť aj s klauzulou GROUP BY. Nasledujúci príkaz vráti ID zákazníka, meno zákazníka, kvalifikáciu, cenu a dátum pomocou klauzuly Left Join s klauzulou GROUP BY.
SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price;
Vyššie uvedené vyhlásenie poskytne nasledujúci výstup:
LEFT JOIN with WHERE Clause
Klauzula WHERE sa používa na vrátenie filter výsledok z tabuľky. Nasledujúci príklad to ilustruje s klauzulou Left Join:
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500;
Toto vyhlásenie dáva nasledujúci výsledok:
MySQL LEFT JOIN Multiple Tables
Už sme vytvorili dve tabuľky s názvom ' zákazníkov a ' objednávky' . Vytvorme ešte jednu tabuľku a nazvime ju ako „ kontakty“, ktorý obsahuje nasledujúce údaje:
Vykonajte nasledujúce vyhlásenie a pripojte sa k trom stolovým zákazníkom, objednávkam a kontaktom:
SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income;
Po úspešnom vykonaní vyššie uvedeného dotazu poskytne nasledujúci výstup:
Použitie klauzuly LEFT JOIN na získanie nezhodných záznamov
Klauzula LEFT JOIN je užitočná aj v takom prípade, keď chceme v tabuľke získať záznamy, ktoré neobsahujú žiadne zodpovedajúce riadky údajov z inej tabuľky.
Môžeme to pochopiť pomocou nasledujúceho príkladu, ktorý používa klauzulu LEFT JOIN na nájdenie zákazníka, ktorý nemá číslo mobilného telefónu:
SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ;
Vyššie uvedený príkaz vráti nasledujúci výstup:
Rozdiel medzi klauzulou WHERE a ON v MySQL LEFT JOIN
V LEFT Join dáva podmienka WHERE a ON iný výsledok. Môžeme vidieť nasledujúce otázky, aby sme pochopili ich rozdiely:
Klauzula WHERE
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500;
Poskytne nasledujúci výstup, ktorý vráti:
Doložka ON
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500;
Poskytne nasledujúci výstup: