nisfarm.ru

Left join (SQL) - příklad, podrobný popis, chyby použití

V libovolné relativní databázi jsou všechny informace distribuovány na samostatných tabulkách. Mnoho z tabulek si vzájemně propojilo vzájemné vztahy. Nicméně, s pomocí Sql dotazy

je naprosto možné vytvořit spojení mezi daty, která nejsou obsažena v schématu. To se provádí prováděním operace join join, která umožňuje vytvářet vztahy mezi libovolným počtem tabulek a připojit i zdánlivě nesourodé data.

V tomto článku budeme hovořit konkrétně o levém vnějším připojení. Než začneme popisovat tento typ připojení, přidáme do databáze některé tabulky.

Příprava potřebných tabulek

Například v naší databázi jsou informace o lidech a jejich nemovitostech. Základní informace je založeno na třech tabulkách: lidé (lidé), nemovitosti (nemovitosti), realty_peoples (tabulka s vztahem k komu lidem, co vlastnictví patří). Předpokládejme, že následující údaje jsou uloženy v tabulkách pro lidi:

Lidé

id

L_name

F_name

Middle_name

Narozeniny

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.1.1986

3

Evgeniin

Alexander

Fedorovič

30.4.1964

4

Annina

Láska

Pavlovna

31.3.1989

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

Vlastnictví:

Nemovitosti

id

adresu

1

Arkhangelsk, st. Voronina, 7, ap. 6

2

Arkhangelsk, st. Severodvinskaya, 84, Apt. 9, pokoj. 5

3

Arkhangelsk, Severodvinsk, ul. Lenina, d. 134, apt. 85

4

Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, apt. 137

5

Arkhangelsk, pl. Terekhin, d. 89, apt. 13. místo

Pro vztahy jsou lidé nemovitostí:

Realty_peoples

id_peoples

id_realty

typ

7.

3

Společné společné vlastnictví

8.

3

Společné společné vlastnictví

3

5

Vlastnictví

7.

1

Vlastnictví

5

4

Sdílené vlastnictví

6.

4

Sdílené vlastnictví

Levý spoj (Sql) - popis

vlevo připojit sql příklad

Levé připojení má následující syntaxi:

Tabulka_A LEFT JOIN tabulka_B [{ON predikát} | {USING Seznam_skalibry}]

A vypadá to takto:vlevo připojit příklady sql

A tento výraz je přeložen jako "Vybrat všechny řádky z tabulky A bez výjimky a výstup pouze řádky odpovídající predikátu z tabulky B. Pokud v tabulce B neexistovala žádná dvojice řádků tabulky A, vyplňte výsledné sloupce Null hodnotami. "

Nejčastěji se při spuštění levého připojení nastavuje ON, USING se používá pouze v případě, že názvy sloupců, pro které je naplánováno připojení, jsou stejné.

Levý spoj - příklady použití

S pomocí levého spojení vidíme, zda všichni lidé na seznamu národů mají nemovitosti. Chcete-li to provést, spusťte následující příklad v levém spojení sql:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

Od lidí LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

A dostáváme následující výsledek:

Žádost1

id

L_name

F_name

Middle_name




Narozeniny

id_realty

typ

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.1.1986

3

Evgeniin

Alexander

Fedorovič

30.4.1964

5

Vlastnictví

4

Annina

Láska

Pavlovna

31.3.1989

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

4

Sdílené vlastnictví

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

4

Sdílené vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

1

Vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

3

Společné společné vlastnictví

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

3

Společné společné vlastnictví

Jak vidíme, u Ivanova Darya, Pugin Vladislav a Annina Lyubov nemají registrovaná práva k nemovitostem.

A co bychom mohli použít pomocí spojení Vnitřního spojení? Jak víte, vylučuje chybné linky, takže tři lidé z našeho konečného vzorku prostě vypadnou:

Žádost1

id

L_name

F_name

Middle_name

Narozeniny

id_realty

typ

3

Evgeniin

Alexander

Fedorovič

30.4.1964

5

Vlastnictví

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

4

Sdílené vlastnictví

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

4

Sdílené vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

1

Vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

3

Společné společné vlastnictví

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

3

Společné společné vlastnictví

Zdá se, že druhá možnost také splňuje podmínky našeho úkolu. Nicméně, pokud budeme pokračovat v přidávání více a více tabulek, tři lidé z výsledku již nenávratně zmizí. Proto v praxi při kombinaci více tabulek jsou spojení vlevo a vpravo mnohem častěji využívána než vnitřní spojení.

Pokračujeme ve zvážení příkladů s levým spojením sql. Připojte se k tabulce s adresami našich nemovitostí:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

FROM Peoples

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEVÁ SPOJENÍ Realty ON Realty.id = Realty_peoples.id_realty

Nyní získáváme nejen formu práva, ale také adresy nemovitostí:

Žádost1

id

L_name

F_name

Middle_name

Narozeniny

id_realty

typ

adresu

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.1.1986

3

Evgeniin

Alexander

Fedorovič

30.4.1964

5

Vlastnictví

Arkhangelsk, pl. Terekhin, d. 89, apt. 13. místo

4

Annina

Láska

Pavlovna

31.3.1989

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

4

Sdílené vlastnictví

Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, apt. 137

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

4

Sdílené vlastnictví

Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, apt. 137

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

3

Společné společné vlastnictví

Arkhangelsk, Severodvinsk, ul. Lenina, d. 134, apt. 85

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

1

Vlastnictví

Arkhangelsk, st. Voronina, 7, ap. 6

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

3

Společné společné vlastnictví

Arkhangelsk, Severodvinsk, ul. Lenina, d. 134, apt. 85

Levý spoj - typické chyby použití: nesprávné uspořádání tabulek

Hlavní chyby povolené levým vnějším spojením tabulek jsou dvě:

  1. Pořadí tabulek, které způsobily ztrátu dat, je nesprávně vybráno.
  2. Chyby při použití Kde v dotazu se sloučenými tabulkami.

Zvažte první chybu. Před vyřešením jakéhokoli problému stojí za to jasně pochopit, co přesně chceme získat. Ve výše uvedeném příkladu jsme vyřadili všechny lidi, ale zcela ztratili informace o objektu pod číslem 2, ze kterého nebyl nalezen majitel.

Pokud jsme přesunuli tabulky do míst dotazu a začali jsme pomocí "hellip- From Realty", pak bychom neztratili žádnou vlastnost, kterou nemůžeme říct o lidech.

vlevo připojit příklad požadavku sql

Nicméně, nebojte se levého spojení, jděte na úplnou externí, která bude zahrnovat jako výsledek a shoduje se a neodpovídá řádku.

Koneckonců velikost vzorku často velmi velké a zbytečné údaje opravdu nezáleží. Hlavním úkolem je pochopit, co chcete v důsledku získat: všichni lidé se seznamem dostupných nemovitostí, nebo seznam všech nemovitostí s jejich vlastníky (pokud existují).

Levý spoj - typické chyby použití: správnost dotazu při nastavení podmínek v položce Kde

Druhá chyba souvisí také se ztrátou dat a není vždy okamžitě zřejmá.

Pojďme se vrátit k dotazu, když používáme levou přípojku přijatých dat na všechny lidi a jejich stávající nemovitosti. Zapamatujte si následující s příkladem left sql join:

Od lidí LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Předpokládejme, že chceme upřesnit dotaz a ne výstupní data, kde typ zákona je "Vlastnost". Pokud jednoduše přidáme, použijeme levý join sql, příkladem je následující podmínka:

...

Kde je typ <> "Vlastnost"

ztratíme údaje o osobách, které nemají žádnou nemovitost, protože prázdná hodnota Nullu se takto neporovnává:

Žádost1

id

L_name

F_name

Middle_name

Narozeniny

id_realty

typ

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

4

Sdílené vlastnictví

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

4

Sdílené vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

3

Společné společné vlastnictví

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

3

Společné společné vlastnictví

Abyste předešli chybám z tohoto důvodu, nejlépe je třeba specifikovat podmínku výběru okamžitě po připojení. Doporučujeme zvážit následující příklad s levým spojením sql.

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

FROM Peoples

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples a typ <> "Vlastnost")

Výsledkem je následující:

Žádost1

id

L_name

F_name

Middle_name

Narozeniny

id_realty

typ

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.1.1986

3

Evgeniin

Alexander

Fedorovič

30.4.1964

4

Annina

Láska

Pavlovna

31.3.1989

5

Gerasimovskaya

Doufám

Pavlovna

14. 4. 1992

4

Sdílené vlastnictví

6.

Gerasimovsky

Oleg

Albertovich

29.1.1985

4

Sdílené vlastnictví

7.

Sukhanovsky

Jurij

Andreevich

25.9.1976

3

Společné společné vlastnictví

8.

Sukhanovskaya

Julie

Yuryevna

10/01/2001

3

Společné společné vlastnictví

Tímto provedením jednoduchého příkladu s levým spojením sql dostaneme seznam všech lidí, přičemž kromě toho vyvodíme, která z nich má nemovitosti ve společném / společném vlastnictví.

left join sql jednoduché vysvětlení příkladu

Na závěr bych chtěl znovu zdůraznit, že je nezbytné zodpovědně převzít výběr informací z databáze. Mnoho nuancí se nám otevřelo s využitím levého spojení sql jednoduchým příkladem, vysvětlením kterého je jeden - než začneme psát i elementární dotaz, musíme pečlivě pochopit, co přesně chceme získat. Hodně štěstí!

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru