CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Jerman2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D. F. 05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D. F. 05023Meksiko
Oke, saya menemukan hal yang sama. Penggabungan tidak "menghindari" atau "memperbaiki" masalah, itu hanya memperjelas secara eksplisit bahwa ada masalah dengan memunculkan kesalahan
Sejujurnya, karena ini tentang integritas data, saya lebih suka mengalami kesalahan daripada tidak dalam kasus ini
Ya, memperbarui dari HANYA satu baris adalah SQL 101, tetapi saya harus berurusan dengan terlalu banyak pengembang yang berada di SQL Kindergarden dan mengira mereka berada di SQL Post-Grad. Saya lebih suka kesalahan daripada kehilangan integritas data, terutama ketika masalah integritas berasal dari pengawasan sederhana di klausa Where, dan tidak harus berulang. Ketidakterulangan dapat membuatnya sangat sulit untuk di-debug
MySQL Self JOIN adalah pernyataan SQL yang digunakan untuk memotong atau menggabungkan tabel dalam database dengan dirinya sendiri. Pada dasarnya, fungsi GABUNG menggabungkan dua atau lebih tabel dalam SQL, tetapi di sini Gabung Sendiri adalah Gabung reguler yang memungkinkan untuk menggabungkan catatan dalam tabel berdasarkan ekspresi bersyarat tertentu. Jenis penggabungan record dengan record lain dalam tabel yang sama ketika suatu kondisi cocok disebut juga sebagai relasi Unary. Khususnya, di sini kunci Asing yang ada di tabel mengacu pada Kunci Utama tabel itu sendiri
Ini berarti bahwa baris tabel akan bergabung dengan setiap baris lainnya di bawah suatu kondisi dan proses ini ditanyakan oleh perintah SQL Gabung Sendiri. Gabung Mandiri di MySQL ini adalah jenis Gabung khusus yang berguna untuk menanyakan data hierarkis dan membandingkan catatan di baris dalam tabel. Dalam kueri pernyataan SQL, kami menggunakan Inner Join atau Left Join Clauses dengan Self Join untuk mengembalikan kumpulan hasil menggunakan kondisi apa pun yang memenuhi. Ini karena sulit untuk merujuk lebih dari satu kueri untuk tabel yang sama. Jadi, kita harus menggunakan alias tabel yang berbeda untuk menambahkan nama tabel yang berbeda saat kita menggunakan Self Join di MySQL jika tidak, kueri menampilkan kesalahan saat dijalankan
Mulai Kursus Ilmu Data Gratis Anda
Hadoop, Ilmu Data, Statistik & lainnya
Sintaksis
Berikut ini adalah sintaks dasar query Self Join di MySQL
Paket Ilmu Data Semua dalam Satu(360+ Kursus, 50+ proyek)
Harga
Lihat Kursus
360+ Kursus Daring. 50+ proyek. 1500+ Jam. Sertifikat yang Dapat Diverifikasi. Akses Seumur Hidup
4. 7 (85.938 peringkat)
SELECT A.Column_Name, B.Column_Name,….FROM TableA T1, TableA T2 WHERE A.Common_Field = B.Common_Field;
Di sini, T1 dan T2 adalah dua alias yang digunakan untuk tabel yang sama bernama Tabel A dalam database dan klausa WHERE menunjukkan ekspresi bersyarat apa pun yang diberikan
Bagaimana cara kerja MySQL Self Join?
- Di MySQL, Self-Join penting untuk menanyakan data yang dipesan dengan membandingkan baris dalam tabel yang sama. Kueri SQL untuk Gabung Sendiri diterapkan dalam tabel ke dirinya sendiri yang menunjukkan seolah-olah ada dua tabel yang menggunakan nama sementara sebagai alias untuk tabel yang sama dalam pernyataan SQL
- Oleh karena itu, aplikasi utama dari kueri ini di MySQL adalah ketika kita memiliki baris data referensi tabel itu sendiri. Misalkan, kita memiliki tabel bernama Karyawan dan ada kolom Supervisor_ID yang mengacu pada karyawan yang merupakan kepala karyawan saat ini di perusahaan tertentu.
- Dengan demikian, ada persyaratan hubungan apa pun antara baris data yang disimpan dalam tabel untuk menerapkan Self Join di MySQL dalam tabel yang sama.
- Mari kita pertimbangkan tabel bernama Orang dengan kolom (PersonID, Nama, Kontak, Alamat, Kota)
- Misalkan, kita ingin mencocokkan orang-orang yang berasal dari kota yang sama dalam tabel, maka kita menggunakan perintah SQL Statement for Self-Join berikut di MySQL
SELECT A.Name AS Name1, B.Name AS Name2, A.City FROM Persons A, Persons B WHERE A.PersonID <> B.PersonID AND A.City = B.City ORDER BY A.City;_
Contoh MySQL Self Join
Diberikan di bawah ini adalah contoh dari MySQL self Join. Mari kita pertimbangkan tabel bernama Orang
Contoh #1 – MySQL Self Join menggunakan Inner Join Clause
Mari kita buat tabel Orang dan masukkan beberapa data sebagai sampel untuk mengeksekusi kueri pada mereka menggunakan Self Join di MYSQL dengan perintah SQL berikut
CREATE TABLE Persons (PersonID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), ReportsTo int, Title varchar(255));
Keluaran
Sekarang, mari kita ambil seluruh detail struktur organisasi. Kami menggabungkan tabel Person dengan dirinya sendiri berdasarkan kolom PersonID dan ReportsTo dari tabel yang menentukan jabatan dengan karyawan
SELECT CONCAT (a.LastName, ', ', a.FirstName) AS Manager, CONCAT(b.LastName, ', ', b.FirstName) AS 'Direct Reporting' FROM persons b INNER JOIN persons a ON a.PersonID = b.ReportsTo ORDER BY Manager;
Keluaran
Kumpulan hasil akan menentukan tabel Orang dengan dua peran berbeda. ‘Manajer’ dan ‘Pelaporan Langsung’ dan hanya karyawan yang memiliki manajer. Namun, 'Pemasaran' tidak ditampilkan karena nama difilter oleh klausa Gabungan Dalam karena kolom Laporan ke adalah NULL tanpa nilai yang cocok dengan kondisi yang diterapkan
Contoh #2 – MySQL Self Join menggunakan Left Join Clause
Karena orang yang bergelar Pemasaran tidak memiliki Manajer dan tidak disertakan dalam kumpulan hasil di atas tetapi di Left Join, kami dapat menampilkannya meskipun tidak memiliki nilai untuk Manajer
SELECT IFNULL (CONCAT (a.LastName, ', ', a.FirstName), 'Top Manager') AS 'Manager', CONCAT(b.LastName, ', ', b.FirstName) AS 'Direct report' FROM Persons b LEFT JOIN Persons a ON a.PersonID = b.ReportsTo ORDER BY Manager DESC;_
Keluaran
Di sini, orang Pemasaran diberikan 'Manajer Teratas' sebagai 'Manajer' karena nilainya untuk Laporan Ke adalah NULL
Contoh #3 – Gunakan MySQL Self Join untuk membandingkan baris yang berurutan
Sebagai contoh, mari kita gunakan Self Join di MySQL untuk mengambil baris dengan membandingkan record dalam tabel yang sama. Mari kita pertimbangkan tabel lain bernama 'Data_Pelanggan' dengan bidang (ID, nama, Umur, Alamat, Gaji) untuk kueri SQL ini
Pernyataan SQL adalah sebagai berikut
SELECT k.ID, l.Name, k.Salary FROM customer_data k, customer_data l WHERE k.Salary < l.Salary;
Keluaran
Contoh #4 – Gunakan MySQL Self Join dengan Inner Join untuk membandingkan baris yang berurutan
Kami telah mengambil tabel 'Pelanggan' dengan bidang (IDPelanggan, Nama, NomorPelanggan, Tujuan_Pembayaran, Jumlah, Kota) sebagai contoh atau tabel sampel untuk menjalankan kueri menggunakan Gabung Mandiri dan membandingkan baris dalam tabel
Here, the list of persons from Customers table is fetched who are located in the same city by joining the table to itself and using comparing operators like and = for City column.
SELECT c1.city, c1.Name, c2.Name FROM customers c1 INNER JOIN customers c2 ON c1.city = c2.city AND c1.Name > c2.Name ORDER BY c1.city;_
Keluaran
Anda dapat melihat di sana tabel hasil kolom kota dan dua kolom Nama yang berisi nama pelanggan berbeda yang tinggal di tempat atau kota yang sama menggunakan kondisi Gabung di mana
- kota = c2. city memastikan bahwa kedua pelanggan memiliki kota yang sama
- Nama > c2. Nama ORDER BY c1. kota memeriksa bahwa tidak ada nama pelanggan yang sama yang disertakan dalam baris hasil
Demikian juga, kita dapat menerapkannya untuk mengambil hasil dari tabel yang sama di bawah predikat gabungan tertentu dan menggunakan Gabungan Dalam atau Kiri serta operator perbandingan untuk menanyakan data yang benar dari tabel dalam database
Kesimpulan
Oleh karena itu, kita dapat mengatakan bahwa Self-Join di MySQL menggunakan 'Selfie' untuk dirinya sendiri tetapi memberikan hasil dengan menganggap tabel sebagai dua menggunakan alias sehingga nama tabel tidak diulang dua kali yang dapat menghasilkan kesalahan. Jenis gabungan reguler ini berguna untuk memodelkan formulir data struktur terorganisir dari tabel dan juga memungkinkan membandingkan baris dan tidak diperlukan untuk menghasilkan hasil yang diperlukan
Artikel yang Direkomendasikan
Ini adalah panduan untuk MySQL Self Join. Di sini kita membahas pengantar, contoh, dan bagaimana MySQL Self Join bekerja dengan kode dan keluaran yang tepat?