Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Joins and Unions Boleh Membantu Mendapatkan dan Menggabungkan Data daripada Berbilang Jadual?

Bagaimanakah SQL Joins and Unions Boleh Membantu Mendapatkan dan Menggabungkan Data daripada Berbilang Jadual?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 01:59:07814semak imbas

How Can SQL Joins and Unions Help Retrieve and Combine Data from Multiple Tables?

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:

  • SERTAI DALAM: Mengembalikan baris sahaja di mana lajur syarat cantum sepadan dalam kedua-dua jadual.
  • Outer JOIN (KIRI/KANAN): Mengembalikan semua baris daripada satu jadual yang ditentukan (kiri atau kanan) dan memadankan baris dari satu lagi. Jika tiada padanan wujud, nilai NULL dikembalikan untuk lajur jadual yang tidak sepadan.
  • INTERSECT (jika disokong): Mengembalikan hanya baris dengan nilai yang sama merentas semua lajur yang digabungkan. Nota: Tidak semua sistem pangkalan data menyokong pengendali INTERSECT secara langsung.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn