Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Melakukan MySQL LEFT JOIN dengan Tiga Jadual?

Bagaimana untuk Cekap Melakukan MySQL LEFT JOIN dengan Tiga Jadual?

Susan Sarandon
Susan Sarandonasal
2025-01-02 22:22:39621semak imbas

How to Efficiently Perform a MySQL LEFT JOIN with Three Tables?

Memahami MySQL LEFT JOIN dengan Tiga Jadual

Penerangan Masalah

Pertimbangkan tiga jadual:

  • Orang (PersonID, Nama, SS): Mengandungi maklumat tentang individu.
  • Ketakutan (FearID, Fear): Menyenaraikan ketakutan yang berbeza.
  • Person_Fear (ID, PersonID, FearID): Mengaitkan individu dengan ketakutan mereka yang berkaitan.

Objektifnya adalah untuk memaparkan semua individu bersama-sama dengan sebarang ketakutan yang berkaitan dengannya (termasuk kes di mana seseorang tidak mempunyai ketakutan).

Menganalisis Pertanyaan Isu

Pertanyaan yang disediakan mempamerkan skema yang salah untuk menyertai jadual:

SELECT persons.name, 
       persons.ss, 
       fears.fear 
FROM   persons 
       LEFT JOIN fears 
              ON person_fear.personid = person_fear.fearid 

Klausa ON secara salah cuba untuk menyertai jadual Person_Fear pada PersonID dan bukannya FearID, iaitu lajur yang bersambung ke Ketakutan.

Penyelesaian yang Diperbaiki

Untuk melakukan ke kiri sertai dengan berkesan, pertimbangkan pendekatan berikut:

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear
    INNER JOIN Fears
    ON Person_Fear.FearID = Fears.FearID
ON Person_Fear.PersonID = Persons.PersonID

Penjelasan:

  • Jadual Persons dibiarkan bercantum dengan Person_Fear on Person_Fear.PersonID = Persons.PersonID .
  • SERTAI DALAM bersarang menghubungkan Person_Fear to Fears pada Person_Fear.FearID = Fears.FearID.
  • Struktur ini memastikan semua rekod Orang disertakan, walaupun rekod yang tidak berkaitan.

Pertanyaan Alternatif:

Cara lain untuk mencapai hasil yang sama ialah:

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID
LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID

Ini pertanyaan menggunakan dua cantuman kiri untuk menyambungkan jadual, menghasilkan hasil yang serupa.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Melakukan MySQL LEFT JOIN dengan Tiga 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