KompyuterlarDasturlash

Misol, batafsil tavsifi, xato foydalanishni - Chap (SQL) ishtirok etish

Har qanday haqiqiy munosabat bazasida barcha ma'lumotlar alohida jadvallarda taqsimlanadi. Jadvallarning aksariyati bir-birlari bilan kontaktlarni o'rnatgan. Biroq, Sql so'rovlaridan foydalanib, diagramma ichida mavjud bo'lmagan ma'lumotlar o'rtasida aloqani o'rnatish mumkin. Bu esa, har qanday sonli jadvallar orasidagi munosabatlarni o'rnatishga va hatto bir-biridan farq qiladigan ma'lumotlarga ulanishga imkon beruvchi qo'shilishni qo'shish jarayoni orqali amalga oshiriladi.

Ushbu maqolada biz chap tashqi aloqa haqida gapiramiz. Biz ulanishning bunday turini tasvirlashni boshlashdan avval ma'lumotlar bazasiga ba'zi jadvallarni qo'shamiz.

Kerakli jadvallarni tayyorlash

Misol uchun, bizning ma'lumotlar bazamizda odamlar va ularning ko'chmas mulklari haqida ma'lumot mavjud. Asosiy ma'lumotlar uchta jadvalga asoslangan: Xalqlar (odamlar), Realty (ko'chmas mulk), Realty_peoples (munosabatlar jadvali, kimlarga ko'chmas mulk qaysi shaxsga tegishli). Masalan, jadvalda odamlar uchun quyidagi ma'lumotlar saqlanadi:

Xalqlar

Id

L_name

F_name

Middle_name

Tug'ilgan kun

1

Ivanova

Dariya

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

01/29/1986

3

Evgeniy

Aleksandr

Fedorovich

04/30/1964

4

Annina

Sevgi

Pavlovna

31.12.1989

5

Gerasimovskaya

Umid qilamanki

Pavlovna

03/14/1992

6-o'rin

Gerasimovskiy

Oleg

Albertovich

01/29/1985

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

8-chi

Suxanovskaya

Julia

Yuryevna

10/01/2001

Mulk:

Realty

Id

Manzil

1

Arxangelsk, st. Voronina, 7, 6-may

2

Arxangelsk, st. Severodvinskaya, 84, Apt. 9, xona. 5

3

Arxangelsk viloyati, Severodvinsk, ul. Lenina, 134-bet, boshq. 85

4

Arxangelsk viloyati, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

5

Arxangelsk, pl. Terekhin, 89-bet, Apt. 13-chi

Aloqalar uchun odamlar ko'chmas mulkdir:

Realty_peoples

Id_peoples

Id_realty

Turi

7-chi

3

Umumiy birgalikdagi mulk

8-chi

3

Umumiy birgalikdagi mulk

3

5

Mulkchilik

7-chi

1

Mulkchilik

5

4

Birgalikda egalik

6-o'rin

4

Birgalikda egalik

Chap qo'shilish (Sql) - tavsif

Chap ulanish quyidagi sintaksisga ega:

Table_A LEFT JOIN jadval_B [{O'N predict} | { Ustunlar ro'yxatidan foydalanish}]

Va shunga o'xshash:

Va bu ibora "jadval A" dan barcha satrlarni istisnosiz tanlang va faqat B tilida keltirilgan predikate mos satrlarni chiqaring. B jadvalida A jadvallari uchun juftlik bo'lmasa, natijada olingan Null ustunlarni qiymatlar bilan to'ldiring ".

Ko'pincha, chap ulanish o'rnatilganda, O'N belgilanadi, USING faqatgina ulanish rejalangan ustun nomlari bir xil bo'lsa ishlatiladi.

Chap qo'shilish - ishlatish misollari

Chap aloqaning yordami bilan, biz odamlar ro'yxatida barcha odamlar ko'chmas mulk mavjudmi yoki yo'qligini bilib olamiz. Buni amalga oshirish uchun quyidagi qo'shimchani chap qo'shma sql-da bajaring:

Xalqlarni tanlang. *, Realty_peoples.id_realty, Realty_peoples.type

HALQLARNING BIRLASh TO'G'RISIDA Realty_peoples ON PEoples.id = Realty_peoples.id_peoples;

Va biz quyidagi natijani qo'lga kiritamiz:

Request1

Id

L_name

F_name

Middle_name

Tug'ilgan kun

Id_realty

Turi

1

Ivanova

Dariya

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

01/29/1986

3

Evgeniy

Aleksandr

Fedorovich

04/30/1964

5

Mulkchilik

4

Annina

Sevgi

Pavlovna

31.12.1989

5

Gerasimovskaya

Umid qilamanki

Pavlovna

03/14/1992

4

Birgalikda egalik

6-o'rin

Gerasimovskiy

Oleg

Albertovich

01/29/1985

4

Birgalikda egalik

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

1

Mulkchilik

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

3

Umumiy birgalikdagi mulk

8-chi

Suxanovskaya

Julia

Yuryevna

10/01/2001

3

Umumiy birgalikdagi mulk

Ko'rib turganingizdek, Ivanova Darya, Pugin Vladislav va Annina Lyubov ko'chmas mulkka tegishli huquqlarga ega emaslar.

Va ichki qo'shilishni ichki a'zolikdan qanday foydalanamiz? Ma'lumki, bu mos kelmaydigan satrlarni chetlab o'tadi, shuning uchun so'nggi namunamizdagi uch kishi oddiygina tushib ketadi:

Request1

Id

L_name

F_name

Middle_name

Tug'ilgan kun

Id_realty

Turi

3

Evgeniy

Aleksandr

Fedorovich

04/30/1964

5

Mulkchilik

5

Gerasimovskaya

Umid qilamanki

Pavlovna

03/14/1992

4

Birgalikda egalik

6-o'rin

Gerasimovskiy

Oleg

Albertovich

01/29/1985

4

Birgalikda egalik

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

1

Mulkchilik

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

3

Umumiy birgalikdagi mulk

8-chi

Suxanovskaya

Julia

Yuryevna

10/01/2001

3

Umumiy birgalikdagi mulk

Ikkinchi variant ham bizning vazifamizning shartlariga javob beradi. Ammo, agar biz ko'proq va ko'p sonli jadvallarni qo'shishni davom ettirsak, natijadan uchtadan ortiq kishi haligacha yo'qolib ketadi. Shuning uchun, amalda, bir nechta jadvalni birlashtirganda, Chap va O'ng yo'nalishlarini ichki qo'shilishga qaraganda ko'proq ishlatiladi.

Biz chap qo'shilish sql bilan misollarni ko'rib chiqishni davom ettiramiz. Bizning ko'chmas mulk manzillari bilan jadvalga qo'shiling:

Xalqlarni tanlash. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

Xalqlardan

Real People_ID_LOGIN_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_PACIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL_POCIAL

Realty.id = Realty_peoples.id_realty haqida REAL JOIN Realty

Endi biz nafaqat huquqning shaklini, balki ko'chmas mulk manzillarini ham olamiz:

Request1

Id

L_name

F_name

Middle_name

Tug'ilgan kun

Id_realty

Turi

Manzil

1

Ivanova

Dariya

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

01/29/1986

3

Evgeniy

Aleksandr

Fedorovich

04/30/1964

5

Mulkchilik

Arxangelsk, pl. Terekhin, 89-bet, Apt. 13-chi

4

Annina

Sevgi

Pavlovna

31.12.1989

5

Gerasimovskaya

Umid qilamanki

Pavlovna

03/14/1992

4

Birgalikda egalik

Arxangelsk viloyati, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

6-o'rin

Gerasimovskiy

Oleg

Albertovich

01/29/1985

4

Birgalikda egalik

Arxangelsk viloyati, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

3

Umumiy birgalikdagi mulk

Arxangelsk viloyati, Severodvinsk, ul. Lenina, 134-bet, boshq. 85

7-chi

Suxanovskiy

Yuriy

Andreevich

09/25/1976

1

Mulkchilik

Arxangelsk, st. Voronina, 7, 6-may

8-chi

Suxanovskaya

Julia

Yuryevna

10/01/2001

3

Umumiy birgalikdagi mulk

Arxangelsk viloyati, Severodvinsk, st. Lenin, d. 134, q. 85

Chap qo'shilish - xato, odatda foydalanish: bekor Yordan jadvali

chap tashqi qilingan asosiy xatolar jadvallar, ikki qo'shilish:

  1. To'g'ri ma'lumot esa adashganni uchun jadvallar tartibini tanlab oldi.
  2. xatolar bilan so'rog'ini foydalanish paytida qaerda jadvallarni qo'shilishingiz.

birinchi xato o'ylab ko'ring. har qanday muammo qarori oldin aniq, biz oxirida qabul qilish istayman nima ekanligini tushunish kerak. Yuqorida bu misolda biz odamlar, har bir birini oldi, lekin butunlay egasi topilmadi soni 2, ostida ob'ekt haqida ma'lumot yo'qoladi.

Biz ba'zi joylarda bir so'rovlar jadvallarni ko'chib, va bilan boshlash edi "... Realty ... xalqlar qo'shilish Chapdan» har qanday bir mol bo'lsa, biz siz odamlar haqida aytib bo'lmaydi, yo'qotgan emas.

Lekin, chap ulanish qo'rqib bo'lishi yakunlari va tenglashtirish, va taalukli chiziqlar kiritilgan bo'lib, to'liq tashqi o'tish emas.

Axir, namuna hajmi ko'pincha juda katta va qo'shimcha ma'lumotlar aslida befoyda. Asosiy narsa - sen bir natija olish uchun istagan narsani tushunishga: barcha insonlar, ularning mavjud mol-mulkini ro'yxat yoki ularning egalari bilan butun mulk ro'yxati (agar mavjud bo'lsa) bilan.

Chap qo'shilish - xato, odatda foydalanish: talabiga to'g'ri qaerda sharoit o'rnatayotgan

Ikkinchi xato ham ma'lumotlar yo'qotilishi bilan bog'liq bo'lgan, va har doim darhol zohiriy emas bo'ladi.

ulanishlar barcha insonlar va ularning mavjud mol-mulkini uchun ma'lumotlarni qabul orqali biz chap ning so'rovi qaytaylik. chap SQL misol qo'shilish bilan quyidagi eslab:

Xalq LEFT JOIN FROM Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Biz so'rov oydinlik istayman va chiqish ma'lumotlarni, qilsa, deylik qaerda qonun turi - "Mulk". Biz shunchaki qo'shishingiz bo'lsa, SQL, quyidagi holatda misol qo'shilish tark foydalanish:

...

Qayerdan turi <> "Mulk"

Biz quyidagi null qiymati Null nisbatan emas, chunki, hech xususiyatiga ega odamlar ma'lumotlarni yo'qotadi:

Query1

id

L_name

F_name

Middle_name

tug'ilgan kun

id_realty

shrift

5

Gerasimovsky

umid

P.

14.03.1992

4

Common qismlari

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Common qismlari

7

Sukhanovskaya

hakamlar hay'ati

A.

09/25/1976

3

Jami qo'shma mulk

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Jami qo'shma mulk

Shuning uchun, xatolar oldini olish uchun, u munosabati ustiga darhol tanlash holatini belgilash uchun eng yaxshi hisoblanadi. Biz SQL misol qo'shilish chap quyidagi o'ylab taklif.

SELECT Xalq. *, Realty_peoples.id_realty, Realty_peoples.type

xalqlarning

LEFT Realty_peoples JOIN (Peoples.id = Realty_peoples.id_peoples va turi <> "Mulk")

quyidagicha natija bo'ladi:

Query1

id

L_name

F_name

Middle_name

tug'ilgan kun

id_realty

shrift

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandr

Federovich

04/30/1964

4

Annina

sevgi

P.

31.12.1989

5

Gerasimovsky

umid

P.

14.03.1992

4

Common qismlari

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Common qismlari

7

Sukhanovskaya

hakamlar hay'ati

A.

09/25/1976

3

Jami qo'shma mulk

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Jami qo'shma mulk

SQL misol qo'shilish chap oddiy quyidagi Shunday qilib, biz yana harakat, barcha odamlar ro'yxatini qabul, bir xolislik / qo'shma mulk bu xususiyatlari biri.

Xulosa qilib, men yana bir bor bazasi har qanday axborot, bir misol ma'suliyatli olinishi kerak, deb ta'kidlashni istardim. chap bizga oldida ochilgan ko'p isboti SQL oddiy misol qo'shilish, tushuntirish bittasi - siz ham asosiy so'rovlar yozish uchun oldin, siz diqqat bilan biz oxirida qabul qilish istayman nima tushunish kerak. Omad tilaymiz!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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