КомпьютерлерБағдарламалау

Үлгі, егжей-тегжейлі сипаттамасы, қате пайдалану - сол жақ (SQL) қосылуға

Кез келген нақты реляциялық деректер базасында барлық ақпарат бөлек кестелерде таратылады. Көптеген кестелер өзара бір-бірімен байланыс орнатқан. Дегенмен, Sql сұрауларын пайдаланып, схемада жоқ деректер арасында байланыс жасауға болады. Бұл кестелердің кез-келген саны арасындағы қатынастарды құруға және тіпті көрінбейтін әртүрлі деректерді қосуға мүмкіндік беретін біріктіру әрекетін орындау арқылы жасалады.

Бұл мақалада сол жақ сыртқы байланыс туралы нақты әңгімелестік. Байланыстың осы түрін сипаттай бастамас бұрын, дерекқорға кейбір кестелерді қосамыз.

Қажетті кестелерді дайындау

Мысалы, біздің дерекқорымызда адамдар туралы және олардың жылжымайтын мүлік туралы ақпарат бар. Негізгі ақпарат үш кестеге негізделген: Адамдар (адамдар), Realty (жылжымайтын мүлік), Realty_peoples (қатынастар кестесі, жылжымайтын мүлік қандай адамдарға тиесілі). Кестелерде адамдарға арналған келесі деректер сақталады:

Халықтар

Id

L_name

F_атауы

Middle_name

Туған күні

1

Иванова

Дарья

Борисовна

16.07.2000

2

Пугин

Владислав

Николаевич

01/29/1986

3

Евгений

Александр

Федорович

30.04.1964 ж

4

Анина

Махаббат

Павловна

31.12.1989

5

Герасимовская

Үміт

Павловна

14.03.1992

6-шы

Герасимовский

Олег

Альбертович

01/29/1985

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

8-ші

Сухановская

Джулия

Юрьевна

10/01/2001

Жылжымайтын мүлік:

Realty

Id

Мекен-жайы

1

Архангельск қ. Воронина, 7, 6 қабат

2

Архангельск қ. Северодвинская, 84, кв. 9 бөлме. 5

3

Архангельск облысы, Северодвинск, ул. Ленина, 134 бет, дана. 85

4

Архангельск облысы, Новодвинск, ул. Пролетарская, 16, кв. 137

5

Архангельск, пл. Терехин, 89 бет, д. 13-ші

Адамдар қарым-қатынас үшін жылжымайтын мүлік болып табылады:

Realty_peoples

Id_peoples

Id_realty

Түрі

7-ші

3

Бірлескен ортақ меншік

8-ші

3

Бірлескен ортақ меншік

3

5

Меншік құқығы

7-ші

1

Меншік құқығы

5

4

Ортақ меншік

6-шы

4

Ортақ меншік

Сол жақта қосылу (Sql) - сипаттамасы

Сол қосылымда келесі синтаксис бар:

Table_A LEFT JOIN кестесі_B [{ON предикат } | { Бағандар тізімін пайдалану }]

Және бұл көрінеді:

Және бұл өрнек «Кестеден А барлық жолдарды таңдап алып тастаңыз және B кестесінен предикатқа сәйкес келетін жолдарды шығарыңыз. Егер кестеде B кесте A жолдарының қатарына жұп болмаса, онда алынған Нөлдік бағандарды мәндермен толтырыңыз «.

Көбінесе, сол қосылым жүзеге асырылғанда, ON көрсетіледі, USING тек қосылым жоспарланатын баған атаулары бірдей болған кезде ғана пайдаланылады.

Сол біріктіру - пайдалану мысалдары

Сол байланыстың көмегімен біз халықтардың тізімінде барлық адамдардың жылжымайтын мүлікке ие екендігін көре аламыз. Осыны орындау үшін сол жақта join sql ішінде келесі мысалды орындаңыз:

ТАҢДАУ халықтар *, Realty_peoples.id_realty, Realty_peoples.type

PEOPLES OF PEOPLES FROM PEOPLES FROM PEOPLE PEOPLE WHERE ARE ONLY PEITY.ID = Realty_peoples.id_peoples;

Ал келесі нәтиже:

Сұрау1

Id

L_name

F_атауы

Middle_name

Туған күні

Id_realty

Түрі

1

Иванова

Дарья

Борисовна

16.07.2000

2

Пугин

Владислав

Николаевич

01/29/1986

3

Евгений

Александр

Федорович

30.04.1964 ж

5

Меншік құқығы

4

Анина

Махаббат

Павловна

31.12.1989

5

Герасимовская

Үміт

Павловна

14.03.1992

4

Ортақ меншік

6-шы

Герасимовский

Олег

Альбертович

01/29/1985

4

Ортақ меншік

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

1

Меншік құқығы

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

3

Бірлескен ортақ меншік

8-ші

Сухановская

Джулия

Юрьевна

10/01/2001

3

Бірлескен ортақ меншік

Өздеріңіз көріп отырғандай, Иванова Дарья, Пугин Владислав және Анина Любовь жылжымайтын мүлікке құқықты жоқ.

Ішкі бірлестікті қалай пайдалануға болады? Өздеріңіз білесіздер, сәйкес келмейтін сызықтар жоққа шығарылады, сондықтан біздің соңғы үлгідегі үш адам жай ғана құлап кетеді:

Сұрау1

Id

L_name

F_атауы

Middle_name

Туған күні

Id_realty

Түрі

3

Евгений

Александр

Федорович

30.04.1964 ж

5

Меншік құқығы

5

Герасимовская

Үміт

Павловна

14.03.1992

4

Ортақ меншік

6-шы

Герасимовский

Олег

Альбертович

01/29/1985

4

Ортақ меншік

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

1

Меншік құқығы

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

3

Бірлескен ортақ меншік

8-ші

Сухановская

Джулия

Юрьевна

10/01/2001

3

Бірлескен ортақ меншік

Екінші нұсқа да біздің тапсырмамыздың шарттарына сай келетін сияқты көрінеді. Дегенмен, егер біз көбірек кестелерді қосуды жалғастыра берсек, нәтиженің үшеуі біржола жойылады. Сондықтан, іс жүзінде, бірнеше кестелерді біріктіргенде, сол және оң қосылымдар Ішкі біріктіруден әлдеқайда жиі қолданылады.

Біз сол үлесті мысалға келтіруді жалғастырамыз. Кестеге біздің жылжымайтын мүлік мекенжайларымен қосылыңыз:

ТАҢДАУ халықтар *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

Халықтардан

PEITY.id = Realty_peoples.id_peoples туралы Realty_peoples ONE TOOL

Realty.id = Realty_peoples.id_realty бойынша REAL JOIN Realty

Енді біз құқық нысанын ғана емес, сондай-ақ жылжымайтын мүлік мекен-жайларын да аламыз:

Сұрау1

Id

L_name

F_атауы

Middle_name

Туған күні

Id_realty

Түрі

Мекен-жайы

1

Иванова

Дарья

Борисовна

16.07.2000

2

Пугин

Владислав

Николаевич

01/29/1986

3

Евгений

Александр

Федорович

30.04.1964 ж

5

Меншік құқығы

Архангельск, пл. Терехин, 89 бет, д. 13-ші

4

Анина

Махаббат

Павловна

31.12.1989

5

Герасимовская

Үміт

Павловна

14.03.1992

4

Ортақ меншік

Архангельск облысы, Новодвинск, ул. Пролетарская, 16, кв. 137

6-шы

Герасимовский

Олег

Альбертович

01/29/1985

4

Ортақ меншік

Архангельск облысы, Новодвинск, ул. Пролетарская, 16, кв. 137

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

3

Бірлескен ортақ меншік

Архангельск облысы, Северодвинск, ул. Ленина, 134 бет, дана. 85

7-ші

Сухановский

Юрий

Андреевич

25.09.1976ж

1

Меншік құқығы

Архангельск қ. Воронина, 7, 6 қабат

8-ші

Сухановская

Джулия

Юрьевна

10/01/2001

3

Бірлескен ортақ меншік

Архангельск облысы, Северодвинск, ЖК. Ленин, D. 134, Q. 85

Сол жақ қосылуға - қате типтік пайдалану: жарамсыз рәсімі үстел

сол жақ сыртқы бағамында жасалды Негізгі қателіктер кестелер, екі қосылуға:

  1. Дұрыс деректер жоғалған болатын үшін кестелер тәртібін таңдаған.
  2. қателер бар сұрауды пайдалану кестелерді қайда.

Бірінші қателік қарастырайық. кез келген мәселені шешу үшін алдын ала анық, біз соңында алғыңыз қандай екенін түсінген жөн. Жоғарыда Бұл мысалда, біз адамдардың әрбір бірін алды, бірақ толық, оның иесі табылған жоқ саны 2, астында объектісі туралы ақпаратты жоғалтып.

біз кейбір жерлерде сұрауда кестелерді көшіп, және бастау келсе ... «Realty халықтың қосылуға қалдырды ...» кез келген бір мүлікті, біз жоғалтқан емес еді, сіз адамдар туралы айтып емес.

Бірақ Сәйкес келетін жолдар нәтижелері мен сәйкестік енгізілген сол байланысты, сыртқы толық қосқыш, қорқып емес, болуы емес.

Өйткені, үлгідегі көлемі көбінесе өте үлкен болып табылады, және қосымша деректер шын мәнінде пайдасыз болып табылады. Ең бастысы - сіз нәтиже алғыңыз қандай анықтау: олардың қолжетімді меншік тізімін немесе олардың иелерімен бүкіл мүліктік тізімге (егер бар болса) барлық адамдардың.

Сол жақ қосылуға - қате типтік пайдалану: мұндағы жағдай орнату кезінде сұрау дұрыс

Екінші қате, сондай-ақ деректердің жоғалуына байланысты, және әрқашан бірден айқын емес болып табылады.

біз барлық адамдар мен олардың қолданыстағы жылжымайтын мүлік үшін алынған деректер қосылымдары арқылы кеткенде артқы сұрауға барайық. сол жақ келесі Есіңізде SQL мысал қосылу:

Халықтар солдан Realty_peoples ON Peoples.id = Realty_peoples.id_peoples JOIN;

біз сұрауын нақтылау келеді делік және шығыс заң түрі деректерді емес, жасайды - «Жылжымайтын мүлік». біз жай ғана қосуыңызға болса, солға пайдаланып SQL, келесі жай-мысал қосылу:

...

Қайда түрі <> «Жылжымайтын мүлік»

біз төмендегідей NULL мәні Null салыстырғанда, өйткені, ешқандай жылжымайтын мүлікке ие адамдар туралы деректерді жоғалтасыз:

Query1

ID

L_name

F_name

Middle_name

туған күні

id_realty

түрі

5

Gerasimovsky

үміт

P.

14.03.1992

4

Жалпы бөліктері

6

Gerasimovsky

Олег

Альбертович

01/29/1985

4

Жалпы бөліктері

7

Sukhanovskaya

әділ қазылар алқасы

A.

09/25/1976

3

Жалпы бірлескен меншік

8

Sukhanovskaya

Юлия

Y.

01.10.2001

3

Жалпы бірлескен меншік

Осы себеппен пайда қателерді болдырмау үшін, оны қосылғаннан кейін бірден таңдау шартын орнату үшін ең жақсы болып табылады. Біз SQL мысал қосылуға солға келесі қарастыруды ұсынамыз.

Халықтар ТАҢДАУ. *, Realty_peoples.id_realty, Realty_peoples.type

халықтардан

LEFT Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples мен түрін <> «меншік») кіруге

төмендегідей нәтиже болады:

Query1

ID

L_name

F_name

Middle_name

туған күні

id_realty

түрі

1

Иванова

Дарья

B.

07/16/2000

2

Pugin

Владислав

Николаевич

29.01.1986

3

Evgenin

Александр

Federovich

04/30/1964

4

Annina

махаббат

P.

31.12.1989

5

Gerasimovsky

үміт

P.

14.03.1992

4

Жалпы бөліктері

6

Gerasimovsky

Олег

Альбертович

01/29/1985

4

Жалпы бөліктері

7

Sukhanovskaya

әділ қазылар алқасы

A.

09/25/1976

3

Жалпы бірлескен меншік

8

Sukhanovskaya

Юлия

Y.

01.10.2001

3

Жалпы бірлескен меншік

Осылайша, солға қарапайым SQL мысал қосылуға келесі, біз одан әрі үлестік / ортақ бірлескен меншікте осы сипаттарының бірін жылжыту, барлық адамдардың тізімін алды.

Қорытындылай келе, мен деректер базасын кез келген ақпаратты үлгісі жауапкершілікпен қабылдануы тиіс деп тағы бір рет атап өткім келеді. Сіз тіпті негізгі сұрауды жаза бастайды бұрын, сіз мұқият біз соңында алғыңыз түсіну үшін керек - сол бізге алдында ашылған Көп енгізуі SQL қарапайым мысал, бір түсініктеме қосылыңыз. Сәттілік!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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