ကွန်ပျူတာများပရိုဂရမ်းမင်း

ဥပမာတစ်ခု, အသေးစိတ်ဖော်ပြချက်, ထိုအမှား၏အသုံးပြုမှုကို - လက်ဝဲဘက် (SQL) join

မည်သည့်စစ်မှန်သော relational database ထဲတွင်, ရှိသမျှသတင်းအချက်အလက်များကိုသီးခြားစားပွဲပေါ်ဖြန့်ဝေသည်။ ကျောက်ပြားများအတော်များများအချင်းချင်းအတူဆက်သွယ်ရေးအစီအစဉ်အတွက်ထွက်မသတ်မှတ်နေကြသည်။ သို့သျောလညျး၏အကူအညီဖြင့် SQL query လုပ်တဲ့အခါ ကတိုက်နယ်အတွင်းရှိ embedded မဒေတာများအကြား link တစ်ခု, ထားရန်အတော်လေးဖြစ်နိုင်ပါတယ်။ ဒါဟာသင်ထင်ရသောလူထုကိုသတင်းအချက်အလက်ကျောက်ပြားကိုမဆိုအရေအတွက်ကများအကြားဆက်ဆံရေးကိုတည်ဆောက်ရန်နှင့်ပင်ချိတ်ဆက်ဖို့ခွင့်ပြုထားတဲ့ပူးပေါင်းဆက်သွယ်မှု, ဖျော်ဖြေခြင်းဖြင့်ပြုသောအမှုဖြစ်ပါတယ်။

ဤဆောင်းပါးသည် join လက်ဝဲပြင်အကြောင်းကိုအထူးစကားပြောပါလိမ့်မယ်။ ကွန်နက်ရှင်၏ဤအမျိုးအစားများ၏ဖော်ပြချက်မှဆက်လက်မလုပ်ဆောင်ခင်အချို့သောဒေတာဘေ့စစားပွဲများတွင်ထည့်ပါ။

လိုအပ်သောစားပွဲပြင်ဆင်နေ

ဥပမာအားဖြင့်, ကျွန်တော်တို့ရဲ့ဒေတာဘေ့စရှိလူများနှင့်မိမိတို့၏အိမ်ခြံမြေအကြောင်းသတင်းအချက်အလက်လည်းမရှိ။ ပြည်သူ့ (လူတွေ), Realty (အိမ်ခြံမြေ), Realty_peoples (စားပွဲဆက်ဆံရေးကို, အဘယျသို့ပိုင်ဆိုင်မှုမှပိုင်ဆိုင်သောလူ): သုံးယောက်စားပွဲပေါ်တွင်အခြေခံအကျဉ်းချုပ်။ လူအများ၏စားပွဲထဲမှာသိမ်းထားတဲ့အောက်ပါဒေတာယူဆ:

လူမျိုး

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

1

Ivanova

Daria

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

အလက်ဇန်းဒါး

Federovich

04/30/1964

4

Annina

ချစ်ခြင်းမေတ္တာ

P.

31.12.1989

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

အိမ်ခြံမြေ:

Realty

အိုင်ဒီ

လိပ်စာ

1

Arkhangelsk, ul ။ Voronin, ဃ။ 7, kv.6

2

Arkhangelsk, ul ။ Severodvinskaya, ဃ။ 84, q ။ 9 BR ။ 5

3

Arkhangelsk ဒေသ, Severodvinsk, St ။ လီနင်, ဃ။ 134, က q ။ 85

4

Arkhangelsk ဒေသ, Novodvinsk, ul ။ Proletarshaya, ဃ။ 16, q ။ 137

5

Arkhangelsk, pl ။ Terekhina, ဃ။ 89, q ။ 13

ဆက်ဆံရေးကလူ - အိမ်ခြံမြေ:

Realty_peoples

id_peoples

id_realty

ပုံစံ

7

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

8

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

3

5

အိမ်ခြံမြေ

7

1

အိမ်ခြံမြေ

5

4

ဘုံအစိတ်အပိုင်းများ

6

4

ဘုံအစိတ်အပိုင်းများ

လက်ဝဲဘက် (SQL) join - ဖျေါပွခကျြ

Left ဒြပ်ပေါင်းများကိုအောက်ပါ syntax ရှိပါတယ်:

| Table_A LEFT table_B [{predicate ON} JOIN ] {tolbtsov နှင့်အတူ spisok_ အသုံးပြုခြင်း}

အောက်ပါအတိုင်းသိထားအဖြစ်:

နှင့်ဤစကားရပ် predicate သာတူညီသည့်အတန်းဖော်ပြရန်စားပွဲတင် A နှင့်စားပွဲတင် B က၏လိုင်း, ချွင်းချက်မပါဘဲ, အားလုံးကို Select လုပ်ပါ "အဖြစ်ဘာသာပြန်ထားသောဖြစ်ပါတယ်။ တန်ဖိုးများ "- စားပွဲအားလုံးတစ်ဦးများအတွက် string ကို table ထဲမှာရှာတွေ့ခဲ့သည်လျှင်, Null ရလဒ်ကော်လံဖြည့်ပါ။

အများစုကတော့အခါလက်ဝဲကွန်နက်ရှင်က connection စေရန်စီစဉ်ထားသောကော်လံအမည်များ, တူညီတဲ့များမှာတဲ့အခါမှသာအသုံးပြုသည်အသုံးပြုခြင်း, ON ညွှန်ပြနေသည်။

လက်ဝဲ join - အသုံးပြုမှုဥပမာ

လက်ဝဲ၏ဆက်သွယ်မှုအားဖြင့်ငါတို့သည်လျှင်ရှိပြည်သူ့ပစ္စည်းဥစ္စာပိုင်ဆိုင်မှု, စာရင်းထဲကလူအပေါငျးတို့တွေ့နိုင်ပါသည်။ လက်ဝဲအတွက်ဒီလိုလုပ်ဖို့ SQL query ကိုဥပမာ join:

ပြည်သူ့ SELECT ။ *, Realty_peoples.id_realty, Realty_peoples.type

ပြည်သူ့လက်ဝဲမှ Realty_peoples ON Peoples.id = Realty_peoples.id_peoples JOIN;

အောက်ပါရလဒ်များကိုနှင့်အတူ:

Query1

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

id_realty

ပုံစံ

1

Ivanova

Daria

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

အလက်ဇန်းဒါး

Federovich

04/30/1964

5

အိမ်ခြံမြေ

4

Annina

ချစ်ခြင်းမေတ္တာ

P.

31.12.1989

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

4

ဘုံအစိတ်အပိုင်းများ

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

ဘုံအစိတ်အပိုင်းများ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

1

အိမ်ခြံမြေ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

ကျွန်တော်မြင်သည်အတိုင်း, Ivanova Darya Pugin Vladislav နှင့် Anninoy Lyubovi အဘယ်သူမျှမအိမ်ခြံမြေအခွင့်အရေးများမှတ်ပုံတင်။

ငါတို့သည်အတွင်းအတွင်းပိုင်း join join သုံးပြီးဘယ်အရာကိုခံရကြပြီမလဲ သင်သိကြောင့် Non-တိုက်ဆိုင်သည့်အတန်းချန်လှပ်ဒါကြောင့်ကျွန်တော်တို့ရဲ့နောက်ဆုံးနမူနာထဲကသုံးရိုးရှင်းစွာကျဆင်းသွားလိမ့်မည်ဟု:

Query1

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

id_realty

ပုံစံ

3

Evgenin

အလက်ဇန်းဒါး

Federovich

04/30/1964

5

အိမ်ခြံမြေ

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

4

ဘုံအစိတ်အပိုင်းများ

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

ဘုံအစိတ်အပိုင်းများ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

1

အိမ်ခြံမြေ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

ဒါဟာဒုတိယဗားရှင်းလည်းကျွန်တော်တို့ရဲ့ပြဿနာများ၏အခြေအနေများနှင့်ကိုက်ညီကြောင်းထင်ရပေသည်။ ကျွန်တော်အခြားအပေါ်ပူးတွဲစတင်များနှင့်အခြားစားပွဲလျှင်မည်သို့ပင်ဆို, ရလဒ်ကနေလူသုံးယောက်ပြီးသား irretrievably သွားပြီ။ ထို့ကြောင့်, အလေ့အကျင့်အတွက်မျိုးစုံစားပွဲပေါင်းစပ်ပြီးတဲ့အခါမှာပိုပြီးမကြာခဏလက်ဝဲများနှင့်အတွင်းပိုင်း join ထက်ညာဘက် connection ကိုအသုံးပြုခဲ့သည်။

SQL ဥပမာ join ဘယ်ဘက်ကိုကြည့်ဖို့ဆက်လက်ပါလိမ့်မယ်။ ကျွန်တော်တို့ရဲ့အိမ်လိပ်စာများနှင့်အတူစားပွဲတစ်ခု Attach:

ပြည်သူ့ SELECT ။ *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

လူများထံမှ

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT Realty.id = Realty_peoples.id_realty ON Realty JOIN

ယခုငါတို့ပညတ်တရား၏တစ်ဦးကြင်ကြင်နာနာ, ဒါပေမယ့်လည်းအိမ်ခြံမြေများ၏လိပ်စာမသာ get:

Query1

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

id_realty

ပုံစံ

လိပ်စာ

1

Ivanova

Daria

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

အလက်ဇန်းဒါး

Federovich

04/30/1964

5

အိမ်ခြံမြေ

Arkhangelsk, pl ။ Terekhina, ဃ။ 89, q ။ 13

4

Annina

ချစ်ခြင်းမေတ္တာ

P.

31.12.1989

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

4

ဘုံအစိတ်အပိုင်းများ

Arkhangelsk ဒေသ, Novodvinsk, ul ။ Proletarshaya, ဃ။ 16, q ။ 137

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

ဘုံအစိတ်အပိုင်းများ

Arkhangelsk ဒေသ, Novodvinsk, ul ။ Proletarshaya, ဃ။ 16, q ။ 137

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

Arkhangelsk ဒေသ, Severodvinsk, St ။ လီနင်, ဃ။ 134, က q ။ 85

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

1

အိမ်ခြံမြေ

Arkhangelsk, ul ။ Voronin, ဃ။ 7, kv.6

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

Arkhangelsk ဒေသ, Severodvinsk, St ။ လီနင်, ဃ။ 134, က q ။ 85

လက်ဝဲ join - အမှား၏ပုံမှန်အသုံးပြုမှု: မမှန်ကန်တဲ့လုပ်ထုံးလုပ်နည်းစားပွဲပေါ်မှာ

လက်ဝဲပြင်မှာလုပ်အခြေခံပညာအမှားတွေစားပွဲနှစ်ခုပူးပေါင်းဖို့:

  1. မှန်ကန်စွာဒေတာကိုဆုံးရှုံးခဲ့သည့်အဘို့စားပွဲ၏အမိန့်ကိုရှေးခယျြ။
  2. အမှားများနဲ့မေးမြန်းမှုတွေကိုအသုံးပြုတဲ့အခါစားပွဲ join အဘယ်မှာရှိ။

ပထမဦးဆုံးအမှားစဉ်းစားပါ။ မည်သည့်ပြဿနာများ၏ဆုံးဖြတ်ချက်မတိုင်မီကရှင်းရှင်းလင်းလင်းကျနော်တို့အဆုံး၌အရလိုချင်တာတွေကိုနားလည်ကြရပါမည်။ အထက်ကဒီဥပမာထဲမှာ, ကျနော်တို့လူမျိုး၏တိုင်းတစ်ခုတည်းတဦးတည်း ယူ. , ဒါပေမယ့်လုံးဝအဘယ်သူ၏ပိုင်ရှင်မတွေ့ရှိခဲ့သည်အရေအတွက်ကို 2, အောကျအရာဝတ္ထုနဲ့ပတ်သက်တဲ့သတင်းအချက်အလက်ဆုံးရှုံးခဲ့ရသည်။

ငါတို့သည်အချို့သောအရပ်တွင်တစ်ဦးစုံစမ်းမှုအတွက်စားပွဲပြောင်းရွေ့နှင့်အတူစတင်ပါလိမ့်မယ် အကယ်. « ... Realty မှစ. ပြည်သူ့ join left ... »တစုံတယောက်သောသူသည်ပစ္စည်းဥစ္စာပိုင်ဆိုင်မှုကျနော်တို့ဆုံးရှုံးမှာမဟုတ်ဘူး, သင်ကလူအကြောင်းကိုပြောပြလိမ့်မည်မဟုတ်ပါ။

ဒါပေမယ့်တူညီသည့်လိုင်းရလဒ်များနှင့်ကိုက်ညီခြင်းတွင်ထည့်သွင်းထားတဲ့လက်ဝဲဆက်သွယ်မှုပြင်ပအပြည့်အဝမှ switch ကို၏ထိတ်လန့်လျက်နှင့်မဖြစ်ပါဘူး။

အားလုံးပြီးနောက် နမူနာများ၏အသံအတိုးအကျယ် ကိုမကြာခဏအလွန်ကြီးမားသည်နှင့်အပိုဒေတာတကယ်အသုံးမကျဖြစ်ပါတယ်။ အဓိကအရာ - သင်ရလဒ်ရဖို့လိုချင်တာတွေထုတ်တွက်ဆရန်သူတို့၏ရရှိနိုင်ပိုင်ဆိုင်မှုများစာရင်းကိုသို့မဟုတ်၎င်းတို့၏ပိုင်ရှင်များနှင့်အတူတစ်ခုလုံးကိုပိုင်ဆိုင်မှုစာရင်း (ရှိပါက) နှင့်အတူလူအားလုံး၏။

လက်ဝဲ join - အမှား၏ပုံမှန်အသုံးပြုမှု: အဘယ်မှာရှိအခွအေနမြေား setting သည့်အခါတောင်းဆိုခြင်းမှန်ကန်

ဒုတိယအမှားကိုလည်းအချက်အလက်များ၏အရှုံးနဲ့ဆက်စပ်နှင့်အမြဲချက်ချင်းသိသာမဟုတ်ဖြစ်ပါတယ်။

ကျွန်တော်တို့ဟာလူအပေါငျးတို့နှင့်၎င်းတို့၏လက်ရှိပိုင်ဆိုင်မှုအတွက်ဒေတာကိုလက်ခံရရှိဆက်သွယ်မှုမှတဆင့်ထွက်ခွာသွားကြသောအခါရဲ့ပြန်စုံစမ်းမှုသို့သွားကြကုန်အံ့။ လက်ဝဲဘက်နှင့်အတူအောက်ပါကိုသတိရပါ SQL ဥပမာ join:

ပြည်သူ့လက်ဝဲမှ Realty_peoples ON Peoples.id = Realty_peoples.id_peoples JOIN;

ကျနော်တို့တောင်းဆိုချက်ရှင်းလင်းချင်ဆိုပါစို့နှင့် output ကိုတရားဥပဒရှိရာအမျိုးအစားဒေတာ, မ - "အိမ်ခြံမြေ" ။ ကျနော်တို့ရိုးရှင်းစွာ append လြှငျ, လက်ဝဲသုံးပြီး SQL အောက်ပါအခြေအနေတစ်ရပ်ဥပမာ join:

...

အဘယ်မှာရှိ type ကို <> "အိမ်ခြံမြေ"

ကျွန်တော်အောက်မှာဖေါ်ပြတဲ့အတိုင်းတရားမဝင်သောတန်ဖိုးကို Null နှိုင်းယှဉ်မရသောကြောင့်အဘယ်သူမျှပိုင်ဆိုင်မှုရှိသည်သောသူကလူပေါ်ဒေတာကိုဆုံးရှုံးပါလိမ့်မယ်:

Query1

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

id_realty

ပုံစံ

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

4

ဘုံအစိတ်အပိုင်းများ

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

ဘုံအစိတ်အပိုင်းများ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

ဒီအကြောင်းပြချက်ဖြစ်ပွားခြင်းမှအမှားများကိုကာကွယ်တားဆီးဖို့, က connection ကိုအပေါ်သို့ချက်ချင်းရွေးချယ်ရေးခွအေနအေသတ်မှတ်ထားဖို့အကောင်းဆုံးဖြစ်ပါတယ်။ ကျနော်တို့ SQL ဥပမာ join လက်ဝဲနှင့်အတူအောက်ပါစဉ်းစားရန်အကြံပြုအပ်ပါသည်။

ပြည်သူ့ SELECT ။ *, Realty_peoples.id_realty, Realty_peoples.type

လူများထံမှ

LEFT Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples AND အမျိုးအစား <> "အိမ်ခြံမြေ") JOIN

အောက်မှာဖေါ်ပြတဲ့အတိုင်းရလဒ်ဖြစ်လိမ့်မည်:

Query1

အိုင်ဒီ

L_name

F_name

Middle_name

မှေးနေ့

id_realty

ပုံစံ

1

Ivanova

Daria

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

အလက်ဇန်းဒါး

Federovich

04/30/1964

4

Annina

ချစ်ခြင်းမေတ္တာ

P.

31.12.1989

5

Gerasimovsky

မျှော်လင့်ချက်

P.

14.03.1992

4

ဘုံအစိတ်အပိုင်းများ

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

ဘုံအစိတ်အပိုင်းများ

7

Sukhanovskaya

ဂျူရီလူကြီးစု

အေ

09/25/1976

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

8

Sukhanovskaya

ဂျူလီယာ

Y.

01.10.2001

3

စုစုပေါင်းပူးတွဲပိုင်ဆိုင်မှု

ထို့ကြောင့်ဘယ်ဖက်ဖို့ရိုးရှင်းတဲ့ SQL ဥပမာ join အောက်ပါအသုံးပြုပုံကျနော်တို့နောက်ထပ်တစ်ခုရှယ်ယာ / ပူးတွဲပိုင်ဆိုင်မှုတွင်ဤဂုဏ်သတ္တိ၏တဦးတည်းရွေ့လျားလူအပေါင်းတို့ကိုများစာရင်းကိုလက်ခံရရှိခဲ့သည်။

တစ်ဦးနိဂုံးချုပ်အဖြစ်ငါဒေတာဘေ့စကနေမဆိုသတင်းအချက်အလက်နမူနာတာဝန်သိယူခံရဖို့လိုအပျကွောငျးတစ်ဖန်ပြန်လည်အလေးပေးပြောကြားချင်ပါတယ်။ သင်ပင်အခြေခံစုံစမ်းမှုရေးသားဖို့စတင်မှီ, သငျသညျဂရုတစိုက်ကျနော်တို့အဆုံး၌အရချင်သောအရာကိုနားလည်သဘောပေါက်ရန်ရမယ် - လက်ဝဲဘက်နှင့်ငါတို့ကိုများ၏ရှေ့မှောက်၌ဖွင့်လှစ်ခဲ့အတော်များများတစ်ခုလုံးကိုပြည့်ပြည့်စုံစုံ SQL ရိုးရှင်းတဲ့ဥပမာ, အရာတစျခု၏ရှင်းပြချက်ကိုဆက်သွယ်နိုင်ပါသည်။ ကံကောင်းပါစေ!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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