BilgisayarlarProgramlama

Bir örnek, ayrıntılı bir açıklama, hatanın kullanımını - Sol (SQL) katılmak

herhangi bir gerçek ilişkisel veritabanı, tüm bilgileri ayrı masada dağıtılır. Tablolardan birçoğu birbiriyle iletişim şemasında belirtilmiştir. yardımı ile ancak SQL sorguları değil devredeki gömülü veri arasında bir bağlantı koymak oldukça mümkündür. Bu tabloların herhangi sayısı arasında bir ilişki kurmak ve hatta görünüşte farklı bilgiler arasında bağlantı sağlayan bir katılmak bağlantı gerçekleştirerek yapılır.

Sol dış birleşim ile ilgili bu madde özellikle bahsedeceğiz. Bu tür bağlantı açıklamasında geçmeden önce, bazı veritabanı tablolarında ekleyin.

gerekli tabloları hazırlanması

Örneğin, veri tabanımızda, insanlar ve onların gayrimenkul hakkında bilgi yoktur. Halklar (kişi), Realty (gayrimenkul), Realty_peoples (tablo ilişkileri, insanlar ne özelliğin ait): Özet üç tablolarına göre. insanların tablolarda saklanan aşağıdaki verileri varsayalım:

halklar

kimlik

L_NAME

F_name

Middle_name

doğum günü

1

İvanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolayeviç

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

aşk

P.

31.12.1989

5

Gerasimovsky

umut

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

jüri

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

01.10.2001

Emlak:

gayrimenkul

kimlik

adres

1

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

2

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

3

Arkhangelsk bölgesi, Severodvinsk, st. Lenin, d. 134, q,. 85

4

Arkhangelsk bölgesi, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

İlişkiler insanlar - özelliği:

Realty_peoples

id_peoples

id_realty

tip

7

3

Toplam ortak mülkiyet

8

3

Toplam ortak mülkiyet

3

5

özellik

7

1

özellik

5

4

Ortak parçalar

6

4

Ortak parçalar

katılmak (SQL) Sol - Açıklama

Sol bileşik yapısı aşağıdaki gibidir:

| Table_A SOL table_B [{ON yüklem} KATILIN ] {Tolbtsov ile spisok_ KULLANIMI}

Ve aşağıdaki şematik olarak:

Ve bu ifade "Tablo A ve Tablo B hattı yüklem sadece eşleşen satırları görüntülemek için, istisnasız Tümünü Seç olarak çevrilmiştir. masa çiftleri A dize tabloda bulunmuştur, o zaman boş çıkan sütunları doldurmak - değerleri".

sol bağlantı AÇIK gerektiğindeki bağlantı kurmak için planlanan sütun adları, aynı olduğunda Çoğu zaman, sadece kullanılan KULLANMA.

Sol katılmak - kullanım örnekleri

solun bağlantısı sayesinde biz listeden tüm insanlar Peoples mülkiyet orada eğer görebilirsiniz. sol Bunu yapmak için sql sorgusu örneği katılmak:

SEÇ Halklar. *, Realty_peoples.id_realty, Realty_peoples.type

Halklar SOL JOIN DAN Realty_peoples AÇIK Peoples.id = Realty_peoples.id_peoples;

Aşağıdaki sonuçlarla:

Sorgu1

kimlik

L_NAME

F_name

Middle_name

doğum günü

id_realty

tip

1

İvanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolayeviç

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

özellik

4

Annina

aşk

P.

31.12.1989

5

Gerasimovsky

umut

P.

1992/03/14

4

Ortak parçalar

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Ortak parçalar

7

Sukhanovskaya

jüri

A.

1976/09/25

1

özellik

7

Sukhanovskaya

jüri

A.

1976/09/25

3

Toplam ortak mülkiyet

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Toplam ortak mülkiyet

Görüldüğü gibi, İvanova Darya Pugin Vladislav ve Anninoy Lyubovi yok gayrimenkul haklarını kaydetti.

Ve ne bir iç İç katılmak katılmak kullanarak, elde ederdim? Bildiğiniz gibi, eşleşmeyen satırları hariç tutar, böylece bizim nihai numunenin üçü basitçe kalkması yönünde:

Sorgu1

kimlik

L_NAME

F_name

Middle_name

doğum günü

id_realty

tip

3

Evgenin

Alexander

Federovich

1964/04/30

5

özellik

5

Gerasimovsky

umut

P.

1992/03/14

4

Ortak parçalar

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Ortak parçalar

7

Sukhanovskaya

jüri

A.

1976/09/25

1

özellik

7

Sukhanovskaya

jüri

A.

1976/09/25

3

Toplam ortak mülkiyet

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Toplam ortak mülkiyet

İkinci versiyon aynı zamanda sorunun şartları yerine getirmesi gibi görünüyor. Ancak, diğerinde takmak başlarsanız, ve başka tablo, sonucundan üç kişi zaten geri gelmeyecek şekilde gitmiş. İç daha birden fazla tablo birleştirerek nedenle, pratikte, çok daha sık kullanılan Sol ve Sağ bağlantı katıl.

sql örneklerini katılmak sola bakmaya devam edecek. Bizim evlerin adresleri ile bir tablo ekle:

SEÇ Halklar. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

Halk GELEN

SOL Realty_peoples AÇIK Peoples.id = Realty_peoples.id_peoples KATILIN

SOL Realty.id = Realty_peoples.id_realty AÇIK Realty KATILIN

Şimdi bir hukuk tür, aynı zamanda gayrimenkul adresini sadece olsun:

Sorgu1

kimlik

L_NAME

F_name

Middle_name

doğum günü

id_realty

tip

adres

1

İvanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolayeviç

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

özellik

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

4

Annina

aşk

P.

31.12.1989

5

Gerasimovsky

umut

P.

1992/03/14

4

Ortak parçalar

Arkhangelsk bölgesi, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Ortak parçalar

Arkhangelsk bölgesi, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

jüri

A.

1976/09/25

3

Toplam ortak mülkiyet

Arkhangelsk bölgesi, Severodvinsk, st. Lenin, d. 134, q,. 85

7

Sukhanovskaya

jüri

A.

1976/09/25

1

özellik

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Toplam ortak mülkiyet

Arkhangelsk bölgesi, Severodvinsk, st. Lenin, d. 134, q,. 85

Sol katılmak - hatanın tipik kullanımını: geçersiz yordam tablosu

sol dış yapılan temel hatalar tabloları, iki katılmak:

  1. Doğru veri kaybı verildiği tablo sırasını seçilir.
  2. hataları ile bir sorgu kullanırken nerede tabloları katılmak.

İlk hata düşünün. herhangi bir sorun kararı öncesinde açıkça sonunda almak istediğini anlaşılmalıdır. Yukarıdaki bu örnekte, insanların her birini aldı, ama tamamen sahibi bulunamadı sayı 2, altında nesne hakkında bilgi kaybetti.

bazı yerlerde sorguda tablo taşındı ve başlardım «... Realty ... Peoples katılmak Soldan» herhangi bir özellik varsa, insanlar hakkında söylemeyeceğim, kayıp olmazdı.

Ama sol bağlantının korkmuş sonuçları ve eşleştirme değil, eşleştirme hatları dahil edildiği, tam dış geçmiyoruz.

Sonuçta, numunenin hacmi genellikle çok büyük ve ekstra veri aslında işe yaramaz. Önemli olan - bir sonuç almak istiyorum anlamaya: tüm insanların kendi mevcut mülkiyet bir liste veya sahipleriyleyken tüm özellik listesi (varsa) ile.

Sol katılmak - hatanın tipik kullanımını: Nerede koşulları ayarlarken iste doğrudur

İkinci hata da veri kaybı ile ilişkilidir ve her zaman hemen ortaya edilir.

bağlantıları tüm insanlar ve mevcut mülke ait verilerin alınan aracılığıyla biz sol sorgusuna geri dönelim. Sol sql örneği katılmak aşağıdaki hatırla:

Halklar SOL JOIN DAN Realty_peoples AÇIK Peoples.id = Realty_peoples.id_peoples;

Maalesef bu isteği açıklamak istiyorum ve çıkış verileri, Farzet ki nerede hukuk türü - "Mülkiyet". biz sadece ekleme Eğer sql, aşağıdaki durumun bir örneği katılmak sol kullanarak:

...

Nerede tipi <> "Mülkiyet"

aşağıdaki gibi boş değer null karşılaştırılır olmadığından, hiçbir özelliği olan kişiler verileri kaybedersiniz:

Sorgu1

kimlik

L_NAME

F_name

Middle_name

doğum günü

id_realty

tip

5

Gerasimovsky

umut

P.

1992/03/14

4

Ortak parçalar

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Ortak parçalar

7

Sukhanovskaya

jüri

A.

1976/09/25

3

Toplam ortak mülkiyet

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Toplam ortak mülkiyet

Bu nedenle hataların ortaya çıkmasını önlemek için, bağlantı hemen sonra seçim koşulunu ayarlamak için en iyisidir. Biz sql örneği katılmak sol ile aşağıdakileri dikkate öneriyoruz.

SEÇ Halklar. *, Realty_peoples.id_realty, Realty_peoples.type

Halk GELEN

SOL Realty_peoples ON JOIN (Peoples.id = Realty_peoples.id_peoples VE tipi <> "Mülkiyet")

Sonuç, şöyle olacaktır:

Sorgu1

kimlik

L_NAME

F_name

Middle_name

doğum günü

id_realty

tip

1

İvanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolayeviç

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

aşk

P.

31.12.1989

5

Gerasimovsky

umut

P.

1992/03/14

4

Ortak parçalar

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Ortak parçalar

7

Sukhanovskaya

jüri

A.

1976/09/25

3

Toplam ortak mülkiyet

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Toplam ortak mülkiyet

sql örneği katılmak sola basit takip ederek Böylece, daha fazla hareket, bütün insanların bir listesini aldı, özsermaye / ortak mülkiyet bu özelliklerin biri.

Sonuç olarak ben bir kez daha veritabanından herhangi bir bilgi numune sorumlu alınması gerektiğini vurgulamak isterim. sol ile önümüzde açılan birçok nüanslar sql basit bir örnek katılmak, açıklama hangisi arasında - hatta temel sorgu yazmaya başlamadan önce, dikkatli sonuna geçmek istediklerini anlamak gerekir. İyi şanslar!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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