DatamaskinerProgrammering

Venstre delta (SQL) - et eksempel, detaljert beskrivelse, bruk av feil

I noen reell relasjonsdatabase, er all informasjon fordelt på en egen tabell. Mange av tabellene er angitt i kommunikasjonen ordningen med hverandre. Men med hjelp av SQL-spørringer er det fullt mulig å sette en kobling mellom data, ikke innebygd i kretsen. Dette gjøres ved å utføre en bli-tilkobling, som lar deg bygge en relasjon mellom en rekke tabeller, og med koble tilsynelatende uforenlige informasjon.

Denne artikkelen vil snakke spesifikt om venstre ytre delta. Før du går videre til beskrivelsen av denne type tilkobling, legge inn noen databasetabeller.

Utarbeidelse av nødvendige tabeller

For eksempel, i vår database, er det informasjon om personer og deres eiendom. Oppsummering basert på de tre tabeller: Peoples (mennesker), Realty (eiendom), Realty_peoples (tabellen relasjoner, mennesker som fra hva eiendommen tilhører). Anta følgende data lagret i tabellene i folket:

Peoples

id

L_NAME

F_name

Middle_name

bursdag

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

elsker

P.

31.12.1989

5

Gerasimovsky

håper

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

jury

A.

09/25/1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Fast eiendom:

Realty

id

adresse

1

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

2

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

3

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

4

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

5

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

Relasjoner mennesker - Eiendom:

Realty_peoples

id_peoples

id_realty

typen

7

3

Total felles eierskap

8

3

Total felles eierskap

3

5

eiendom

7

1

eiendom

5

4

felles deler

6

4

felles deler

Venstre delta (SQL) - Beskrivelse

Venstre forbindelse har følgende syntaks:

Table_A VENSTRE BLI table_B [{ON predikat} | {BRUK spisok_ med tolbtsov}]

Og skjematisk som følger:

Og dette uttrykket er oversatt som "Select All, uten unntak, linje i tabell A og tabell B for å vise bare de samsvarende rader av predikatet. Hvis tabellen ble funnet i strengen tabellen for par A, og deretter fylle de resulterende kolonnene Null - verdier".

Oftest når forlot forbindelse indikeres videre, ved hjelp brukes bare når kolonnenavnene, som er planlagt å gjøre tilkoblingen er de samme.

Venstre delta - eksempler på bruk

Ved innkobling av venstre kan vi se, alle menneskene fra listen hvis det Peoples eiendom. For å gjøre dette i venstre bli sql spørring eksempel:

VELG Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

Fra folks VENSTRE BLI Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Med følgende resultater:

spørring1

id

L_NAME

F_name

Middle_name

bursdag

id_realty

typen

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

eiendom

4

Annina

elsker

P.

31.12.1989

5

Gerasimovsky

håper

P.

14.03.1992

4

felles deler

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

felles deler

7

Sukhanovskaya

jury

A.

09/25/1976

1

eiendom

7

Sukhanovskaya

jury

A.

09/25/1976

3

Total felles eierskap

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total felles eierskap

Som vi ser, Ivanova Darya Pugin Vladislav og Anninoy Lyubovi Ingen registrerte eiendomsrettigheter.

Og hva ville vi ha fått, ved hjelp av en indre delta Indre bli med? Som du vet, utelukker det ikke-samsvarende rader, så tre av våre endelige prøven ville bare bli droppet:

spørring1

id

L_NAME

F_name

Middle_name

bursdag

id_realty

typen

3

Evgenin

Alexander

Federovich

04/30/1964

5

eiendom

5

Gerasimovsky

håper

P.

14.03.1992

4

felles deler

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

felles deler

7

Sukhanovskaya

jury

A.

09/25/1976

1

eiendom

7

Sukhanovskaya

jury

A.

09/25/1976

3

Total felles eierskap

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total felles eierskap

Det synes som den andre versjonen også oppfyller betingelsene for vårt problem. Men hvis vi begynner å legge på en annen, og en annen tabell, tre personer fra resultatet allerede ugjenkallelig borte. Derfor, i praksis, ved kombinasjon av flere bord mye oftere brukt høyre og en venstre enn Indre delta.

Vil fortsette å se til venstre bli sql eksempler. Fest en tabell med adresser til husene våre:

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

Fra Peoples

VENSTRE BLI Realty_peoples PÅ Peoples.id = Realty_peoples.id_peoples

VENSTRE BLI Realty PÅ Realty.id = Realty_peoples.id_realty

Nå får vi ikke bare en slags lov, men også adressen til fast eiendom:

spørring1

id

L_NAME

F_name

Middle_name

bursdag

id_realty

typen

adresse

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

eiendom

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

4

Annina

elsker

P.

31.12.1989

5

Gerasimovsky

håper

P.

14.03.1992

4

felles deler

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

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

felles deler

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

7

Sukhanovskaya

jury

A.

09/25/1976

3

Total felles eierskap

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

7

Sukhanovskaya

jury

A.

09/25/1976

1

eiendom

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total felles eierskap

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

Venstre delta - typisk bruk av feil: ugyldig prosedyren bordet

Grunnleggende feil som blir gjort på venstre ytre delta bord, to:

  1. Riktig valgt rekkefølgen på tabeller for hvilke data som gikk tapt.
  2. Hvor feil når du bruker en spørring med bli med tabeller.

Tenk først feil. Før avgjørelsen av eventuelle problemer bør gjøres klart at det vi ønsker å få til slutt. I dette eksempelet ovenfor, vi tok hver eneste en av folket, men helt mistet informasjon om objektet under nummer to, der eieren ble ikke funnet.

Hvis vi flyttet tabellene i en spørring i noen steder, og vil starte med «... Fra Realty igjen bli Peoples ...» enhver eiendom, ville vi ikke ha tapt, vil du ikke fortelle om mennesker.

Men ikke vær redd for venstre, kan du bytte til full ekstern, som er inkludert i resultatene og matchende, og ikke samsvarende linjer.

Tross alt, volumet av prøven er ofte svært store, og ekstra data er faktisk ubrukelig. Det viktigste - å finne ut hva du ønsker å få et resultat: av alle mennesker med en liste over sine tilgjengelige eiendom eller hele eiendommen listen med sine eiere (hvis noen).

Venstre delta - typisk bruk av feil: Request er riktig når du setter betingelsene i Hvor

Den andre feilen er også forbundet med tap av data, og er ikke alltid umiddelbart åpenbare.

La oss gå tilbake til spørsmålet når vi igjen via tilkoblinger mottatt data for alle mennesker og deres eksisterende eiendom. Husk følgende med venstre delta sql eksempel:

Fra folks VENSTRE BLI Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Anta at vi ønsker å avklare forespørselen og ikke kan sende dataene, hvor den type lov - "Property". Hvis vi bare legge til, med Venstre delta sql, et eksempel på følgende vilkår:

...

For type <> "eiendom"

vi vil miste dataene på folk som ikke har eiendom, fordi nullverdi Null ikke sammenlignes som følger:

spørring1

id

L_NAME

F_name

Middle_name

bursdag

id_realty

typen

5

Gerasimovsky

håper

P.

14.03.1992

4

felles deler

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

felles deler

7

Sukhanovskaya

jury

A.

09/25/1976

3

Total felles eierskap

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total felles eierskap

For å hindre at feil oppstår på grunn av dette, er det best å angi valget tilstand umiddelbart etter tilkobling. Vi foreslår å vurdere følgende med venstre delta sql eksempel.

VELG Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

Fra Peoples

VENSTRE BLI Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples og skriv <> "Property")

Resultatet vil være som følger:

spørring1

id

L_NAME

F_name

Middle_name

bursdag

id_realty

typen

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

elsker

P.

31.12.1989

5

Gerasimovsky

håper

P.

14.03.1992

4

felles deler

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

felles deler

7

Sukhanovskaya

jury

A.

09/25/1976

3

Total felles eierskap

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total felles eierskap

Dermed ved å følge de enkle til venstre bli sql eksempel, fikk vi en liste over alle mennesker, flytte videre, en av disse egenskapene i en egenkapital / sameie.

Som en konklusjon vil jeg gjerne understreke igjen at en prøve av informasjon fra databasen må tas ansvarlig. Mange nyanser åpnet foran oss med venstre bli sql enkelt eksempel, den forklaring som en - før du begynner å skrive selv grunnleggende spørsmål, må du nøye for å forstå hva vi ønsker å få til slutt. Lykke til!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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