Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Joins and Unions Boleh Membantu Mendapatkan dan Menggabungkan Data daripada Berbilang Jadual?
Menguasai SQL Joins dan Unions untuk Mendapatkan Data yang Cekap
Panduan ini meneroka cara SQL bergabung dan kesatuan mendapatkan dan menggabungkan data secara berkesan daripada berbilang jadual.
Bahagian 1: Memahami Gabungan dan Kesatuan
Caburan SQL adalah asas untuk mendapatkan semula data merentas berbilang jadual berdasarkan lajur yang dikongsi. Beberapa jenis gabungan wujud:
Kesatuan SQL menggabungkan hasil daripada berbilang penyataan SELECT
, menghapuskan baris pendua secara lalai. Menggunakan UNION ALL
mengekalkan pendua.
Contoh Ilustrasi:
Mari kita tunjukkan dengan contoh yang melibatkan jadual cars
, models
dan colors
.
Contoh 1: Sertaan Dalam
Untuk mendapatkan ID kereta sport (dengan andaian model
ID 1 mewakili kereta sport):
<code class="language-sql">SELECT a.ID, b.model FROM cars a INNER JOIN models b ON a.model = b.ID WHERE b.ID = 1;</code>
Menambah warna kereta memerlukan penyertaan lain:
<code class="language-sql">SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 1;</code>
Contoh 2: Kesatuan
Untuk menggabungkan kereta sport (model ID 1) dan 4WD (model ID 3):
<code class="language-sql">SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 1 UNION SELECT a.ID, b.model, c.color FROM cars a INNER JOIN models b ON a.model = b.ID INNER JOIN colors c ON a.color = c.ID WHERE b.ID = 3;</code>
Contoh 3: Sambungan Luar
Untuk menyenaraikan semua jenama dan kiraan kereta mereka, termasuk jenama tanpa kereta (menggunakan sambungan luar kiri):
<code class="language-sql">SELECT a.brand, COUNT(b.id) AS countOfBrand FROM brands a LEFT OUTER JOIN cars b ON a.ID = b.brand GROUP BY a.brand;</code>
Contoh 4: Mensimulasikan INTERSECT (MySQL)
Memandangkan INTERSECT
tidak disokong secara universal, penyelesaian menggunakan gabungan (untuk MySQL) mungkin kelihatan seperti ini (contoh ini memerlukan pelarasan berdasarkan struktur jadual khusus anda dan kriteria persimpangan yang diingini):
<code class="language-sql"> SELECT a.ID, a.color, a.paint FROM colors a INNER JOIN colors b ON a.ID = b.ID WHERE a.ID > 2 AND b.ID -- Replace with your actual intersection condition ``` (Note: This example is a placeholder and requires adaptation to a real-world scenario to be meaningful.) This demonstrates the power of joins and unions for efficient data manipulation in SQL. Remember to adapt these examples to your specific database schema and requirements.</code>
Atas ialah kandungan terperinci Bagaimanakah SQL Joins and Unions Boleh Membantu Mendapatkan dan Menggabungkan Data daripada Berbilang Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!