KomputerPengaturcaraan

Kiri menyertai (SQL) - contoh, penerangan terperinci, kesilapan penggunaan

Dalam mana-mana pangkalan data hubungan sebenar, semua maklumat diedarkan di atas meja yang berasingan. Banyak daripada jadual yang ditetapkan dalam skim komunikasi antara satu sama lain. Walau bagaimanapun, dengan bantuan Sql pertanyaan ia adalah agak mustahil untuk meletakkan hubungan antara data, tidak tertanam dalam litar. Ini dilakukan dengan melakukan sambungan menyertai, yang membolehkan anda untuk membina hubungan antara apa-apa bilangan jadual, dan juga menyambung maklumat seolah-olah berbeza.

Artikel ini akan bercakap secara khusus mengenai luar sebelah kiri menyertai. Sebelum meneruskan dengan perihalan jenis sambungan, masukkan beberapa jadual pangkalan data.

Menyediakan jadual perlu

Sebagai contoh, dalam pangkalan data kami, terdapat maklumat tentang orang-orang dan hartanah mereka. Ringkasan berdasarkan tiga jadual: Peoples (orang), Realty (hartanah), Realty_peoples (perhubungan jadual, orang yang dari apa harta milik). Andaikan data berikut disimpan dalam jadual rakyat:

Peoples

id

L_name

F_name

Middle_name

Birthday

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

suka

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

juri

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

01.10.2001

hartanah:

Realty

id

alamat

1

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

2

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

3

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

4

Wilayah Arkhangelsk, Arkhangelsk, ul. Proletarshaya, d. 16, q. 137

5

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

Hubungan rakyat - harta:

Realty_peoples

id_peoples

id_realty

jenis

7

3

Jumlah pemilikan bersama

8

3

Jumlah pemilikan bersama

3

5

harta

7

1

harta

5

4

bahagian bersama

6

4

bahagian bersama

Kiri menyertai (Sql) - Description

kompaun kiri mempunyai sintaks yang berikut:

Table_A LEFT JOIN table_B [{ON predikat} | {MENGGUNAKAN spisok_ dengan tolbtsov}]

Dan skema seperti berikut:

Dan Ungkapan ini diterjemahkan sebagai "Pilih Semua, tanpa pengecualian, garis Jadual A dan Jadual B untuk memaparkan baris yang sepadan predikat. Jika jadual didapati dalam jadual tali untuk pasangan A, kemudian mengisi ruangan menyebabkan Null - nilai ".

Selalunya, apabila sambungan sebelah kiri ditunjukkan ON, menggunakan hanya digunakan apabila nama-nama lajur, yang dirancang untuk membuat sambungan yang sama.

Kiri menyertai - contoh penggunaan

Dengan sambungan kiri kita dapat lihat, semua orang dari senarai jika terdapat harta Peoples. Untuk melakukan ini dalam kiri menyertai contoh pertanyaan sql:

Peoples SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DARI Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Dengan keputusan berikut:

Query1

id

L_name

F_name

Middle_name

Birthday

id_realty

jenis

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

harta

4

Annina

suka

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

4

bahagian bersama

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

bahagian bersama

7

Sukhanovskaya

juri

A.

1976/09/25

1

harta

7

Sukhanovskaya

juri

A.

1976/09/25

3

Jumlah pemilikan bersama

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Jumlah pemilikan bersama

Seperti yang kita lihat, Ivanova Darya Pugin Vladislav dan Anninoy Lyubovi No berdaftar hak-hak hartanah.

Dan apa yang akan kita terima, menggunakan dalaman menyertai Inner menyertai? Seperti yang anda tahu, ia tidak termasuk baris yang tidak sepadan, jadi tiga daripada sampel akhir kami hanya akan digugurkan:

Query1

id

L_name

F_name

Middle_name

Birthday

id_realty

jenis

3

Evgenin

Alexander

Federovich

1964/04/30

5

harta

5

Gerasimovsky

berharap

P.

1992/03/14

4

bahagian bersama

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

bahagian bersama

7

Sukhanovskaya

juri

A.

1976/09/25

1

harta

7

Sukhanovskaya

juri

A.

1976/09/25

3

Jumlah pemilikan bersama

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Jumlah pemilikan bersama

Ia akan kelihatan bahawa versi kedua juga memenuhi syarat-syarat masalah kita. Walau bagaimanapun, jika kita mula melampirkan pada yang lain, dan jadual lain, tiga orang daripada hasil yang sudah diselamatkan hilang. Kiri dan kanan sambungan Oleh itu, dalam amalan, apabila menggabungkan berbilang jadual lebih kerap digunakan daripada Inner menyertai.

Akan terus melihat ke kiri menyertai contoh sql. Melampirkan jadual dengan alamat rumah kami:

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

DARI Peoples

KIRI JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

KIRI JOIN Realty ON Realty.id = Realty_peoples.id_realty

Sekarang kita mendapat bukan sahaja sejenis undang-undang, tetapi juga address hartanah:

Query1

id

L_name

F_name

Middle_name

Birthday

id_realty

jenis

alamat

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

harta

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

4

Annina

suka

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

4

bahagian bersama

Wilayah Arkhangelsk, Arkhangelsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

bahagian bersama

Wilayah Arkhangelsk, Arkhangelsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

juri

A.

1976/09/25

3

Jumlah pemilikan bersama

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

7

Sukhanovskaya

juri

A.

1976/09/25

1

harta

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Jumlah pemilikan bersama

Rantau Arkhangelsk, Severodvinsk, ul. Lenina, d. 134, apt. 85

Kiri menyertai - kesilapan penggunaan tipikal: pesanan urutan yang salah

Kesilapan utama yang dibenarkan dengan gabungan sebelah kiri meja ialah dua:

  1. Perintah jadual yang disebabkan data yang hilang telah dipilih secara salah.
  2. Kesilapan apabila menggunakan Di mana dalam pertanyaan dengan jadual bergabung.

Pertimbangkan kesilapan pertama. Sebelum menyelesaikan sebarang masalah, adalah perlu untuk memahami dengan jelas apa sebenarnya yang kita mahu hasilnya. Dalam contoh di atas, kami mengeluarkan semua orang, tetapi benar-benar kehilangan maklumat mengenai objek di bawah nombor 2, dari mana pemiliknya tidak dijumpai.

Jika kami memindahkan jadual di tempat pertanyaan, dan bermula dengan "... Dari Realty kiri menyertai Orang ..." maka kami tidak akan kehilangan harta tunggal, yang anda tidak boleh katakan tentang orang.

Walau bagaimanapun, jangan takut dengan sambungan kiri, pergi ke luaran penuh, yang akan termasuk hasilnya, dan bertepatan, dan tidak sepadan dengan baris.

Lagipun, jumlah sampel sering sangat besar, dan data tambahan benar-benar tidak memerlukan apa-apa. Perkara utama adalah memahami apa yang anda ingin dapatkan hasilnya: semua orang yang mempunyai senarai hartanah yang ada, atau senarai semua hartanah dengan pemiliknya (jika ada).

Kiri menyertai - kesilapan penggunaan biasa: ketepatan pertanyaan apabila menetapkan syarat di mana

Kesalahan kedua juga berkaitan dengan kehilangan data, dan tidak selalu dengan jelas.

Mari kembali ke pertanyaan, apabila kita menggunakan sambungan kiri menerima data pada semua orang dan hartanah mereka yang sedia ada. Ingat perkara berikut dengan contoh contoh sql kiri:

DARI PEKERJA KIRI JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Katakan kami ingin memperbaiki soalan dan bukan data output, di mana jenis undang-undang adalah "Harta". Sekiranya kita tambahnya, gunakan sebelah kiri sql, sebagai contoh keadaan berikut:

...

Di mana jenis <> "Hartanah"

Kami akan kehilangan data mengenai orang yang tidak mempunyai hartanah, kerana nilai kosong dari Null tidak seperti ini:

Request1

Id

L_name

F_name

Middle_name

Hari Lahir

Id_realty

Taipkan

5

Gerasimovskaya

Harapan

Pavlovna

03/14/1992

4

Pemilikan bersama

6th

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Pemilikan bersama

7th

Sukhanovsky

Yuri

Andreevich

09/25/1976

3

Pemilikan bersama bersama

8hb

Sukhanovskaya

Julia

Yuryevna

10/01/2001

3

Pemilikan bersama bersama

Untuk mengelakkan ralat daripada berlaku untuk sebab ini, adalah lebih baik menentukan keadaan pemilihan sebaik sahaja sambungan. Kami cadangkan untuk mempertimbangkan contoh berikut dengan sql join kiri.

SELECT People. *, Realty_peoples.id_realty, Realty_peoples.type

DARIPADA Peoples

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples AND type <> "Property")

Hasilnya adalah seperti berikut:

Request1

Id

L_name

F_name

Middle_name

Hari Lahir

Id_realty

Taipkan

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

01/29/1986

3

Evgeniin

Alexander

Fedorovich

04/30/1964

4

Annina

Cinta

Pavlovna

12/31/1989

5

Gerasimovskaya

Harapan

Pavlovna

03/14/1992

4

Pemilikan bersama

6th

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Pemilikan bersama

7th

Sukhanovsky

Yuri

Andreevich

09/25/1976

3

Pemilikan bersama bersama

8hb

Sukhanovskaya

Julia

Yuryevna

10/01/2001

3

Pemilikan bersama bersama

Oleh itu, dengan melakukan contoh mudah dengan sql join kiri, kami mendapat senarai semua orang, deducing tambahan, yang mana mereka mempunyai hartanah dalam pemilikan bersama / bersama.

Sebagai kesimpulan saya ingin menekankan sekali lagi bahawa perlu mengambil tanggungjawab untuk pemilihan apa-apa maklumat dari pangkalan data. Banyak nuansa telah dibuka sebelum kita dengan penggunaan kiri untuk menyertakan satu contoh mudah, penjelasannya adalah satu - sebelum kita mula menulis walaupun pertanyaan asas, kita mesti teliti memahami dengan tepat apa sebenarnya yang ingin kita dapatkan. Semoga berjaya!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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