Rumah >pangkalan data >tutorial mysql >SQL Joins: Mengapa Menggunakan `LEFT JOIN` dengan Nested `INNER JOIN` Daripada Berbilang Jadual dalam Klausa `FROM`?
SQL left join dan multi-table join in FROM
klausa: Mengapa sintaks kedua
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
SintaksLEFT 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
SintaksLEFT 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
SintaksLEFT 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!