CyfrifiaduronRhaglennu

Chwith yn ymuno (SQL) - enghraifft, mae'r disgrifiad manwl, defnydd o'r gwall

Mewn unrhyw cronfa ddata berthynol go iawn, yr holl wybodaeth yn cael ei ddosbarthu ar fwrdd ar wahân. Mae llawer o'r tablau yn cael eu gosod allan yn y cynllun cyfathrebu â'i gilydd. Fodd bynnag, gyda chymorth SQL ymholiadau mae'n eithaf posibl i roi cysylltiad rhwng y data, nid hymgorffori yn y cylched. Gwneir hyn drwy berfformio ymuno gysylltiad, sy'n eich galluogi i adeiladu perthynas rhwng unrhyw nifer o dablau, a hyd yn oed cysylltu gwybodaeth sy'n ymddangos yn wahanol.

Bydd Mae'r erthygl hon yn sôn yn benodol am y allanol chwith ymuno. Cyn symud ymlaen at y disgrifiad o'r math hwn o gysylltiad, ychwanegu mewn rhai tablau cronfa ddata.

Paratoi'r tablau angenrheidiol

Er enghraifft, yn ein cronfa ddata, mae gwybodaeth am bobl a'u ystad go iawn. Crynodeb yn seiliedig ar y tri thabl: Pobl (pobl), Realty (ystad go iawn), Realty_peoples (perthynas bwrdd, pobl sydd o pa eiddo yn perthyn i). Tybiwch y data canlynol storio yn y tablau o bobl:

Pobl

id

L_name

F_name

Middle_name

Pen-blwydd

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

cariad

P.

1989/12/31

5

Gerasimovsky

gobeithio

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

rheithgor

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

2001/01/10

Eiddo tiriog:

Realty

id

cyfeiriad

1

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

2

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

3

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

4

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

5

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

Cysylltiadau pobl - eiddo:

Realty_peoples

id_peoples

id_realty

math

7

3

Cyfanswm perchnogaeth ar y cyd

8

3

Cyfanswm perchnogaeth ar y cyd

3

5

eiddo

7

1

eiddo

5

4

rhannau cyffredin

6

4

rhannau cyffredin

Chwith ymuno (SQL) - Description

Mae cyfansoddyn gadael y chystrawen canlynol:

Table_A CHWITH YMUNWCH table_B [{AR predicate} | {DEFNYDDIO spisok_ gyda tolbtsov}]

Ac schematically fel a ganlyn:

Ac mae ymadrodd hwn yn cael ei gyfieithu fel "Dewis Popeth, yn ddieithriad, llinell o Dabl A a B Tabl i arddangos dim ond y rhesi cyfateb y predicate. Os bydd y tabl Daethpwyd o hyd yn y tabl llinyn ar gyfer parau A, yna llenwch y colofnau sy'n deillio Null - gwerthoedd ".

Mae'r rhan fwyaf yn aml, pan fydd y cysylltiad adawodd ei nodi, gan ddefnyddio ei ddefnyddio dim ond pan fydd yr enwau golofn, sy'n cael ei gynllunio i wneud y cysylltiad yr un fath.

Chwith yn ymuno - enghreifftiau o ddefnydd

Gyda chysylltiad y chwith gwelwn, yr holl bobl o'r rhestr os oes eiddo Bobl. I wneud hyn yn y chwith ymuno enghraifft ymholiad sql:

Pobl SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

O'R CHWITH Bobl YMUNWCH Realty_peoples AR Peoples.id = Realty_peoples.id_peoples;

Gyda'r canlyniadau canlynol:

Query1

id

L_name

F_name

Middle_name

Pen-blwydd

id_realty

math

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

eiddo

4

Annina

cariad

P.

1989/12/31

5

Gerasimovsky

gobeithio

P.

1992/03/14

4

rhannau cyffredin

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

rhannau cyffredin

7

Sukhanovskaya

rheithgor

A.

1976/09/25

1

eiddo

7

Sukhanovskaya

rheithgor

A.

1976/09/25

3

Cyfanswm perchnogaeth ar y cyd

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Cyfanswm perchnogaeth ar y cyd

Wrth i ni weld, Ivanova Darya Pugin Vladislav a Anninoy Lyubovi Dim hawliau eiddo tiriog cofrestredig.

A beth fyddai i ni dderbyn, gan ddefnyddio mewnol ymuno Inner ymuno? Fel y gwyddoch, nid yw'n cynnwys rhesi nad ydynt yn cyfateb, felly byddai tri allan o'n sampl derfynol yn syml yn cael eu gollwng:

Query1

id

L_name

F_name

Middle_name

Pen-blwydd

id_realty

math

3

Evgenin

Alexander

Federovich

1964/04/30

5

eiddo

5

Gerasimovsky

gobeithio

P.

1992/03/14

4

rhannau cyffredin

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

rhannau cyffredin

7

Sukhanovskaya

rheithgor

A.

1976/09/25

1

eiddo

7

Sukhanovskaya

rheithgor

A.

1976/09/25

3

Cyfanswm perchnogaeth ar y cyd

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Cyfanswm perchnogaeth ar y cyd

Mae'n ymddangos fod yr ail fersiwn hefyd yn bodloni amodau ein problem. Fodd bynnag, os ydym yn dechrau i osod ar un arall, a bwrdd arall, tri o bobl o ganlyniad sydd eisoes wedi mynd tu hwnt i adfer. Felly, yn ymarferol, wrth gyfuno tablau lluosog a ddefnyddir yn llawer mwy aml cysylltiad Chwith a Hawl na Inner ymuno.

Byddwn yn parhau i edrych ar y chwith ymuno enghreifftiau sql. Atodwch tabl gyda chyfeiriadau o'n tai:

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

O Bobl

CHWITH YMUNWCH Realty_peoples AR Peoples.id = Realty_peoples.id_peoples

CHWITH YMUNWCH Realty AR Realty.id = Realty_peoples.id_realty

Nawr rydym yn cael nid yn unig yn fath o gyfraith, ond hefyd y cyfeiriad y ystad go iawn:

Query1

id

L_name

F_name

Middle_name

Pen-blwydd

id_realty

math

cyfeiriad

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

eiddo

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

4

Annina

cariad

P.

1989/12/31

5

Gerasimovsky

gobeithio

P.

1992/03/14

4

rhannau cyffredin

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

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

rhannau cyffredin

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

7

Sukhanovskaya

rheithgor

A.

1976/09/25

3

Cyfanswm perchnogaeth ar y cyd

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

7

Sukhanovskaya

rheithgor

A.

1976/09/25

1

eiddo

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

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Cyfanswm perchnogaeth ar y cyd

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

Chwith yn ymuno - y defnydd nodweddiadol o wall: annilys tabl weithdrefn

camgymeriadau sylfaenol a wnaed yn y allanol chwith ymuno tablau, dau:

  1. Gywir dewis trefn y tablau y mae data ei golli.
  2. Lle gwallau wrth ddefnyddio ymholiad gyda ymuno thablau.

Ystyriwch camgymeriad cyntaf. Dylai Cyn penderfyniad unrhyw broblem yn cael ei deall yn glir bod yr hyn yr ydym am ei gael yn y diwedd. Yn yr enghraifft uchod, rydym yn cymryd pob un o'r bobl, ond yn gwbl collodd y wybodaeth am y gwrthrych o dan y rhif 2, y mae ei berchennog ni chanfuwyd.

Os byddwn yn symud y tablau yn ymholiad mewn rhai mannau, a byddai'n dechrau gyda «... From Realty chwith ymuno Pobl ...» unrhyw un eiddo, ni fyddem wedi colli, ni fyddwch yn dweud wrth bobl am.

Ond peidiwch â bod ofn y cysylltiad chwith, newid i llawn allanol, sy'n cael ei gynnwys yn y canlyniadau a'r paru, ac nid y llinellau cyfateb.

Wedi'r cyfan, mae nifer y sampl yn aml yn fawr iawn, a data ychwanegol mewn gwirionedd yn dda i ddim. Y prif beth - i chyfrif i maes beth yr hoffech ei gael canlyniad: o'r holl bobl sydd â rhestr o'u heiddo sydd ar gael, neu y rhestr eiddo cyfan gyda'u perchnogion (os o gwbl).

Chwith yn ymuno - y defnydd nodweddiadol o wall: Cais yn gywir wrth osod amodau yn y Lle

Mae'r ail gwall hefyd yn gysylltiedig â cholli data, ac nid bob amser yn amlwg ar unwaith.

Gadewch i ni fynd yn ôl at y cwestiwn pan fyddwn yn gadael trwy gysylltiadau a dderbyniwyd data ar gyfer yr holl bobl a'u heiddo presennol. Cofiwch y canlynol gyda chwith ymuno enghraifft sql:

O'R CHWITH Bobl YMUNWCH Realty_peoples AR Peoples.id = Realty_peoples.id_peoples;

Tybiwch ein bod yn awyddus i egluro y cais ac nid yw'n allbwn y data, lle mae'r math o gyfraith - "Eiddo". Os byddwn yn syml atodi, gan ddefnyddio chwith ymuno sql, yn enghraifft o'r amod canlynol:

...

Lle fath <> "Eiddo"

byddwn yn colli'r data ar bobl nad oes ganddynt unrhyw eiddo, gan nad yw'r Null gwerth null ei gymharu fel a ganlyn:

Query1

id

L_name

F_name

Middle_name

Pen-blwydd

id_realty

math

5

Gerasimovsky

gobeithio

P.

1992/03/14

4

rhannau cyffredin

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

rhannau cyffredin

7

Sukhanovskaya

rheithgor

A.

1976/09/25

3

Cyfanswm perchnogaeth ar y cyd

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Cyfanswm perchnogaeth ar y cyd

Er mwyn atal camgymeriadau rhag digwydd am y rheswm hwn, mae'n well gosod y cyflwr dethol yn syth ar ôl cysylltiad. Awgrymwn i ystyried y canlynol gyda'r chwith ymuno enghraifft sql.

Pobl SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

O Bobl

CHWITH YMUNWCH Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples A math <> "Eiddo")

Bydd y canlyniad fel a ganlyn:

Query1

id

L_name

F_name

Middle_name

Pen-blwydd

id_realty

math

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

cariad

P.

1989/12/31

5

Gerasimovsky

gobeithio

P.

1992/03/14

4

rhannau cyffredin

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

rhannau cyffredin

7

Sukhanovskaya

rheithgor

A.

1976/09/25

3

Cyfanswm perchnogaeth ar y cyd

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Cyfanswm perchnogaeth ar y cyd

Felly, drwy ddilyn y syml i'r chwith ymuno esiampl sql, cawsom restr o'r holl bobl, gan symud ymhellach, un o'r eiddo hyn mewn ecwiti / perchnogaeth ar y cyd.

Fel casgliad hoffwn bwysleisio unwaith yn rhagor y mae angen eu cymryd gyfrifol sampl o unrhyw wybodaeth o'r gronfa ddata. Mae llawer o naws a agorwyd o'n blaenau gyda chwith ymuno Enghraifft syml sql, yr esboniad o'r rhain un - cyn i chi ddechrau ysgrifennu hyd yn oed ymholiad sylfaenol, rhaid i chi yn ofalus er mwyn deall yr hyn yr ydym am ei gael yn y diwedd. Pob lwc!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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