Rumah >pangkalan data >tutorial mysql >SQL Joins: Mengapa Menggunakan `LEFT JOIN` dengan Nested `INNER JOIN` Daripada Berbilang Jadual dalam Klausa `FROM`?

SQL Joins: Mengapa Menggunakan `LEFT JOIN` dengan Nested `INNER JOIN` Daripada Berbilang Jadual dalam Klausa `FROM`?

Barbara Streisand
Barbara Streisandasal
2025-01-20 11:06:10369semak imbas

SQL Joins: Why Use `LEFT JOIN` with Nested `INNER JOIN`s Instead of Multiple Tables in the `FROM` Clause?

SQL left join dan multi-table join in FROM klausa: Mengapa sintaks kedua

disyorkan

Walaupun dialek SQL tradisional membenarkan cantuman melalui WHERE klausa dan LEFT JOIN, adalah penting untuk memahami kelebihan menggunakan sintaks LEFT JOIN, terutamanya apabila melakukan cantuman dalaman.

Elakkan kekaburan

Dalam pangkalan data moden, kaedah tradisional penyenaraian jadual menggunakan syarat klausa WHERE telah ditamatkan. Sintaks ini boleh mengelirukan apabila menggabungkan sambung dalam dan luar dalam pertanyaan yang sama.

Contoh: Sambungan Warisan Ambiguous

Pertimbangkan contoh berikut:

<code class="language-sql">SELECT *
FROM Company, Department, Employee
WHERE Company.ID = Department.CompanyID
  AND Department.ID = Employee.DepartmentID</code>

Pertanyaan ini direka bentuk untuk menyenaraikan syarikat, jabatan dan pekerja mereka. Walau bagaimanapun, pengoptimum pertanyaan boleh memilih untuk mengutamakan gabungan dalaman antara jadual Department dan Employee, menyebabkan syarikat tanpa jabatan dikecualikan.

Penyelesaian: LEFT JOIN sintaks

Sintaks

LEFT JOIN menyelesaikan kekaburan ini dengan menyatakan secara eksplisit susunan sambungan. Dengan meletakkan cantuman dalam dalam kurungan dan melakukan cantuman kiri menggunakan jadual syarikat, pertanyaan sebelumnya menjadi:

<code class="language-sql">SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID</code>

Sintaks ini memastikan semua syarikat disertakan, walaupun syarikat tanpa jabatan.

Kawalan dan fleksibiliti tambahan

Sintaks

LEFT JOIN juga menyediakan kawalan tambahan ke atas syarat penyertaan. Contohnya, penapis pertanyaan berikut untuk jabatan yang mengandungi huruf "X" dalam nama mereka:

<code class="language-sql">SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID AND Department.Name LIKE '%X%'</code>

Kesimpulan

Sintaks

LEFT JOIN, bersama-sama dengan cantuman dalaman, menawarkan beberapa kelebihan berbanding kaedah tradisional untuk mencantumkan jadual pada baris FROM. Ia menghilangkan kekaburan, memberikan kawalan yang lebih besar dan memudahkan proses pengoptimuman pertanyaan. Oleh itu, penggunaan LEFT JOIN dan INNER JOIN amat disyorkan dalam aplikasi SQL moden.

Atas ialah kandungan terperinci SQL Joins: Mengapa Menggunakan `LEFT JOIN` dengan Nested `INNER JOIN` Daripada Berbilang Jadual dalam Klausa `FROM`?. 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