KomputerPemrograman

Kiri bergabung (SQL) - contoh, penjelasan rinci, penggunaan kesalahan

Dalam database relasional yang nyata, semua informasi didistribusikan di meja terpisah. Banyak dari tabel ditetapkan dalam skema komunikasi satu sama lain. Namun, dengan bantuan Sql query itu sangat mungkin untuk menempatkan link antara data, tidak tertanam di sirkuit. Hal ini dilakukan dengan melakukan koneksi bergabung, yang memungkinkan Anda untuk membangun hubungan antara sejumlah tabel, dan bahkan menghubungkan informasi yang tampaknya terpisah.

Artikel ini akan berbicara secara khusus tentang kiri luar bergabung. Sebelum melanjutkan ke deskripsi jenis koneksi, menambahkan dalam beberapa tabel database.

Mempersiapkan tabel yang diperlukan

Sebagai contoh, dalam database kami, ada informasi tentang orang-orang dan real estate mereka. Ringkasan berdasarkan tiga tabel: Masyarakat (orang), Realty (real estate), Realty_peoples (hubungan tabel, orang-orang yang dari apa properti milik). Asumsikan data berikut disimpan dalam tabel rakyat:

masyarakat

id

L_NAME

F_Name

Middle_name

ulang tahun

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

cinta

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.

2001/01/10

real estate:

barang tetap

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, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

Hubungan orang - properti:

Realty_peoples

id_peoples

id_realty

jenis

7

3

Total kepemilikan bersama

8

3

Total kepemilikan bersama

3

5

milik

7

1

milik

5

4

bagian umum

6

4

bagian umum

Meninggalkan bergabung (Sql) - Keterangan

Senyawa meninggalkan memiliki sintaks berikut:

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

Dan secara skematik sebagai berikut:

Dan ungkapan ini diterjemahkan sebagai "Pilih Semua, tanpa kecuali, garis Tabel A dan Tabel B untuk menampilkan hanya baris yang cocok predikat. Jika tabel ditemukan dalam tabel string untuk pasangan A, kemudian mengisi kolom yang dihasilkan Null - nilai-nilai".

Paling sering, ketika koneksi meninggalkan ditunjukkan ON, MENGGUNAKAN digunakan hanya ketika nama kolom, yang direncanakan untuk membuat koneksi yang sama.

Kiri bergabung - contoh penggunaan

Dengan koneksi dari kiri kita bisa melihat, semua orang dari daftar jika ada properti Masyarakat. Untuk melakukan hal ini di sebelah kiri bergabung sql contoh query:

Masyarakat SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

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

Dengan hasil sebagai berikut:

Query1

id

L_NAME

F_Name

Middle_name

ulang tahun

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

milik

4

Annina

cinta

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

4

bagian umum

6

Gerasimovsky

oleg

Albertovich

1985/01/29

4

bagian umum

7

Sukhanovskaya

juri

A.

1976/09/25

1

milik

7

Sukhanovskaya

juri

A.

1976/09/25

3

Total kepemilikan bersama

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Total kepemilikan bersama

Seperti yang kita lihat, Ivanova Darya Pugin Vladislav dan Anninoy Lyubovi ada terdaftar hak real estate.

Dan apa yang akan kita terima, menggunakan bergabung batin batin bergabung? Seperti yang Anda tahu, itu tidak termasuk baris yang tidak cocok, sehingga tiga dari sampel akhir kita hanya akan dijatuhkan:

Query1

id

L_NAME

F_Name

Middle_name

ulang tahun

id_realty

jenis

3

Evgenin

Alexander

Federovich

1964/04/30

5

milik

5

Gerasimovsky

berharap

P.

1992/03/14

4

bagian umum

6

Gerasimovsky

oleg

Albertovich

1985/01/29

4

bagian umum

7

Sukhanovskaya

juri

A.

1976/09/25

1

milik

7

Sukhanovskaya

juri

A.

1976/09/25

3

Total kepemilikan bersama

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Total kepemilikan bersama

Akan terlihat bahwa versi kedua juga memenuhi kondisi masalah kita. Namun, jika kita mulai menempel pada yang lain, dan meja lain, tiga orang dari hasil yang sudah irretrievably hilang. Oleh karena itu, dalam prakteknya, ketika menggabungkan beberapa tabel lebih sering digunakan Kiri dan Kanan koneksi dari batin bergabung.

Akan terus melihat ke kiri bergabung contoh sql. Melampirkan meja dengan alamat rumah kami:

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

DARI Masyarakat

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Sekarang kita tidak hanya semacam hukum, tetapi juga alamat real estate:

Query1

id

L_NAME

F_Name

Middle_name

ulang tahun

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

milik

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

4

Annina

cinta

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

4

bagian umum

wilayah Arkhangelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

oleg

Albertovich

1985/01/29

4

bagian umum

wilayah Arkhangelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

juri

A.

1976/09/25

3

Total kepemilikan bersama

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

7

Sukhanovskaya

juri

A.

1976/09/25

1

milik

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

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Total kepemilikan bersama

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

Kiri bergabung - penggunaan khas kesalahan: meja prosedur valid

kesalahan dasar yang dibuat di kiri luar bergabung tabel, dua:

  1. Benar dipilih urutan tabel yang datanya hilang.
  2. Di mana kesalahan ketika menggunakan query dengan bergabung tabel.

Pertimbangkan kesalahan pertama. Sebelum keputusan masalah harus dipahami dengan jelas bahwa apa yang kita ingin mendapatkan pada akhirnya. Dalam contoh di atas, kita mengambil setiap satu dari orang-orang, tapi benar-benar kehilangan informasi tentang objek yang nomor 2, yang pemiliknya tidak ditemukan.

Jika kami pindah tabel dalam query di beberapa tempat, dan akan mulai dengan «... Dari Realty kiri bergabung Masyarakat ...» salah satu properti, kita tidak akan hilang, Anda tidak akan memberitahu tentang orang-orang.

Tapi jangan takut koneksi kiri, beralih ke penuh eksternal, yang termasuk dalam hasil dan pencocokan, dan bukan garis yang cocok.

Setelah semua, volume sampel sering sangat besar, dan data tambahan sebenarnya tidak berguna. Hal utama - untuk mencari tahu apa yang ingin Anda mendapatkan hasil: dari semua orang dengan daftar properti yang tersedia atau daftar properti seluruh dengan pemiliknya (jika ada).

Kiri bergabung - penggunaan khas kesalahan: Permintaan benar saat mengatur kondisi di mana

Kesalahan kedua juga berhubungan dengan hilangnya data, dan tidak selalu segera jelas.

Mari kita kembali ke query ketika kami meninggalkan melalui koneksi data yang diterima untuk semua orang dan properti yang sudah ada mereka. Ingat berikut dengan kiri bergabung contoh sql:

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

Misalkan kita ingin mengklarifikasi permintaan dan tidak output data, dimana jenis hukum - "Properti". Jika kita hanya menambahkan, menggunakan kiri bergabung sql, contoh kondisi berikut:

...

Dimana tipe <> "Properti"

kita akan kehilangan data pada orang yang tidak memiliki properti, karena nilai nol Null tidak dibandingkan sebagai berikut:

Query1

id

L_NAME

F_Name

Middle_name

ulang tahun

id_realty

jenis

5

Gerasimovsky

berharap

P.

1992/03/14

4

bagian umum

6

Gerasimovsky

oleg

Albertovich

1985/01/29

4

bagian umum

7

Sukhanovskaya

juri

A.

1976/09/25

3

Total kepemilikan bersama

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Total kepemilikan bersama

Untuk mencegah kesalahan dari terjadi untuk alasan ini, yang terbaik adalah untuk mengatur kondisi pemilihan segera setelah koneksi. Kami menyarankan untuk mempertimbangkan hal berikut dengan kiri bergabung contoh sql.

Masyarakat SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DARI Masyarakat

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples DAN jenis <> "Properti")

Hasilnya akan seperti berikut:

Query1

id

L_NAME

F_Name

Middle_name

ulang tahun

id_realty

jenis

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

cinta

P.

1989/12/31

5

Gerasimovsky

berharap

P.

1992/03/14

4

bagian umum

6

Gerasimovsky

oleg

Albertovich

1985/01/29

4

bagian umum

7

Sukhanovskaya

juri

A.

1976/09/25

3

Total kepemilikan bersama

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Total kepemilikan bersama

Dengan demikian, dengan mengikuti sederhana ke kiri bergabung contoh sql, kami menerima daftar semua orang, bergerak lebih lanjut, salah satu properti ini dalam ekuitas / kepemilikan bersama.

Sebagai kesimpulan saya ingin menekankan sekali lagi bahwa sampel dari setiap informasi dari database perlu diambil secara bertanggung jawab. Banyak nuansa dibuka di depan kami dengan kiri bergabung contoh sederhana sql, penjelasan yang satu - sebelum Anda mulai menulis bahkan kueri dasar, Anda harus hati-hati untuk memahami apa yang kita ingin mendapatkan pada akhirnya. Good luck!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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