PočítačeProgramování

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

V nějakém skutečném relační databáze, všechny informace jsou rozděleny na samostatné tabulce. Mnohé z těchto tabulek jsou uvedeny v komunikačním systému s sebou. Nicméně, s pomocí SQL dotazů to je docela možné, aby spojení mezi údaji, které nejsou zakotveny v obvodu. To se provádí provedením připojení připojit, která vám umožní vybudovat vztah mezi libovolný počet stolů, a dokonce spojit zdánlivě nesourodé informace.

Tento článek se bude hovořit konkrétně o levé vnější spojení. Předtím, než se přistoupí k popisu tohoto typu připojení, přidejte v některých databázových tabulek.

Připravuje potřebné tabulky

Například v naší databázi, jsou informace o lidech a jejich nemovitostí. Souhrn založený na třech tabulkách: Peoples (lidé), nemovitostí (nemovitosti), Realty_peoples (stolní vztahy, lidé, kteří z toho, co nemovitosti náleží). Předpokládají se následující data uložená v tabulkách lidí:

Peoples

id

L_name

F_name

Middle_name

narozeniny

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

milovat

P.

31.12.1989

5

Gerasimovsky

naděje

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

porota

A.

09/25/1976

8

Sukhanovskaya

Julie

Y.

01.10.2001

Nemovitostí:

nemovitost

id

adresa

1

Arkhangelsk, ul. Voronin, d. 7, kv.6

2

Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5

3

Arkhangelsk region, Severodvinsk, st. Lenin, d. 134, q. 85

4

Arkhangelsk region, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

Arkhangelsk, pl. Terekhina, d. 89, q. 13

Vztahy lidí - nemovitostí:

Realty_peoples

id_peoples

id_realty

typ

7

3

Celková spoluvlastnictví

8

3

Celková spoluvlastnictví

3

5

vlastnost

7

1

vlastnost

5

4

společné součásti

6

4

společné součásti

Doleva připojit (SQL) - Popis

Opustil sloučenina má následující syntaxi:

Table_A LEFT JOIN table_B [{ON predikátu} | {POUŽITÍ spisok_ s tolbtsov}]

A schematicky takto:

A tento výraz překládá jako „Vybrat vše bez výjimky, řádka tabulky A Tabulka B se zobrazí pouze odpovídající řádky predikátu. Pokud bylo zjištěno, že tabulka v tabulce řetězec pro páry A pak vyplňte výsledné sloupce Null - hodnoty“.

Nejvíce často, když se nechal připojení uveden ON, který používáte, je používán pouze v případě, že názvy sloupců, který je plánován pro navázání spojení jsou stejné.

LEFT JOIN - příklady použití

S připojením nalevo vidíme, všichni lidé ze seznamu, pokud tam Peoples vlastnost. Chcete-li to v levém připojit k SQL dotazu příklad:

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

Z Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

S následujícími výsledky:

Query1

id

L_name

F_name

Middle_name

narozeniny

id_realty

typ

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

vlastnost

4

Annina

milovat

P.

31.12.1989

5

Gerasimovsky

naděje

P.

14.03.1992

4

společné součásti

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

společné součásti

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnost

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastnictví

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastnictví

Jak vidíme, Ivanova Darya Pugin Vladislav a Anninoy Lyubovi No zapsána práva nemovitostí.

A to, co bychom získali pomocí vnitřní spojení Vnitřní připojit? Jak víte, že vylučuje neodpovídající řádky, tak tři z našeho konečného vzorku by se jednoduše klesl:

Query1

id

L_name

F_name

Middle_name

narozeniny

id_realty

typ

3

Evgenin

Alexander

Federovich

04/30/1964

5

vlastnost

5

Gerasimovsky

naděje

P.

14.03.1992

4

společné součásti

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

společné součásti

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnost

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastnictví

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastnictví

Mohlo by se zdát, že druhá verze také splňuje podmínky pro náš problém. Nicméně, pokud začneme připevnit na další a další stůl, tři lidé z výsledku již nenávratně pryč. Proto se v praxi, při kombinování více tabulek mnohem častěji používá levý a pravý připojení než vnitřní spojení.

Bude i nadále hledat na levé straně spojit sql příklady. Přiložit tabulku s adresami našich domech:

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

Z Peoples

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Teď dostaneme nejen druh práva, ale také adresy nemovitosti:

Query1

id

L_name

F_name

Middle_name

narozeniny

id_realty

typ

adresa

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

vlastnost

Arkhangelsk, pl. Terekhina, d. 89, q. 13

4

Annina

milovat

P.

31.12.1989

5

Gerasimovsky

naděje

P.

14.03.1992

4

společné součásti

Arkhangelsk region, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

společné součásti

Arkhangelsk region, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastnictví

Arkhangelsk region, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnost

Arkhangelsk, ul. Voronin, d. 7, kv.6

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastnictví

Arkhangelsk region, Severodvinsk, st. Lenin, d. 134, q. 85

Left připojit - typické využití chyby: Neplatná procedura tabulku

Základní chyby učiněné v levé vnější spojení tabulek, z toho dvě:

  1. Správně vybraná pořadí tabulky, pro které byla data ztracena.
  2. Kde chyby při použití dotazu s spojení tabulek.

Vezměme si první chybu. Před rozhodnutím jakéhokoliv problému by mělo být jasné, že to, co chceme, aby se do konce roku. V tomto výše uvedeném příkladu jsme se každý jeden z lidí, ale úplně ztratila informace o objektu pod číslem 2, jehož vlastník nebyl nalezen.

Pokud jsme se přestěhovali do tabulek v dotazu v některých místech, a začne s «... Zleva nemovitostí připojit Peoples ...» jakoukoliv jednu vlastnost, nebyli bychom ztratili, budete vyprávět o lidech, ne.

Ale nemějte strach z levé připojení, přepnout na plný externí, která je zahrnuta do výsledků a přizpůsobení a ne odpovídající řádky.

Po tom všem, že objem vzorku je často velmi velké, a další údaje je vlastně k ničemu. Hlavní věc - přijít na to, co chcete získat výsledek: ze všech lidí se seznamem jejich dostupného majetku nebo celý seznam majetku s jejich vlastníků (pokud existuje).

Left připojit - typické využití chyby: Dotaz při stanovení podmínek v Kde je správný

Druhá chyba je také spojena se ztrátou dat, a nejsou vždy na první pohled patrné.

Vraťme se k dotazu, kdy jsme odjeli přes přípojky přijatých dat pro všechny lidi a jejich stávajícího majetku. Pamatovat na následující skutečnosti s levým spojit sql příklad:

Z Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Předpokládejme, že chceme objasnit žádost a není výstupní data, kde typ práva - „vlastnictví“. Kdybychom jednoduše připojit, Levým připojit SQL příklad za následujících podmínek:

...

Kde typ <> "Property"

ztratíme údaje o lidech, kteří nemají žádný majetek, protože null hodnota Null není ve srovnání takto:

Query1

id

L_name

F_name

Middle_name

narozeniny

id_realty

typ

5

Gerasimovsky

naděje

P.

14.03.1992

4

společné součásti

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

společné součásti

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastnictví

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastnictví

Chcete-li zabránit chybám dochází z toho důvodu, že je nejlepší nastavit podmínku výběrového ihned po připojení. Navrhujeme zvážit následující s levou spojit sql příklad.

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

Z Peoples

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples AND typ <> "vlastnictví")

Výsledek bude vypadat následovně:

Query1

id

L_name

F_name

Middle_name

narozeniny

id_realty

typ

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

milovat

P.

31.12.1989

5

Gerasimovsky

naděje

P.

14.03.1992

4

společné součásti

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

společné součásti

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastnictví

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastnictví

Tím, že po jednoduchých až po levé straně spojit sql příklad, jsme obdrželi seznam všech lidí, pohybující se dále, jeden z těchto vlastností v případě akciové / společného vlastnictví.

Na závěr bych chtěl znovu zdůraznit, že vzorek jakékoliv informace z databáze je třeba brát zodpovědně zdůraznit. Mnoho nuance otevřel před námi s levou spojit sql jednoduchý příklad, vysvětlení, z nichž jeden - předtím, než začnete psát ani základní dotaz, musíte pečlivě pochopit, co chceme dostat do konce roku. Hodně štěstí!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 cs.delachieve.com. Theme powered by WordPress.