logo

MySQL LEFT JOIN

Ľ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

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

MySQL LEFT JOIN

Tabuľka: objednávky

MySQL LEFT JOIN

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

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

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:

MySQL LEFT JOIN

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

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:

MySQL LEFT JOIN

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:

MySQL LEFT JOIN

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:

MySQL LEFT JOIN

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:

MySQL LEFT JOIN

Doložka ON

 SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500; 

Poskytne nasledujúci výstup:

MySQL LEFT JOIN

POZNÁMKA: Podmienky WHERE a ON v klauzule Inner Join vždy vrátia ekvivalentné výsledky.