Rumah > pangkalan data > tutorial mysql > Mengapa Gabungan Luar Kiri Saya Hanya Mengembalikan Data Separa Dari Jadual Kiri?

Mengapa Gabungan Luar Kiri Saya Hanya Mengembalikan Data Separa Dari Jadual Kiri?

Susan Sarandon
Lepaskan: 2025-01-23 16:08:10
asal
382 orang telah melayarinya

Why Does My Left Outer Join Only Return Partial Data From the Left Table?

Bercantum Luar Kiri dan Data Tidak Lengkap daripada Jadual Kiri

Memahami cara syarat sambung mempengaruhi keputusan sambung luar kiri adalah penting. Keadaan yang tidak diletakkan dengan betul boleh menyebabkan data tidak lengkap dari jadual kiri.

Mari kita periksa pertanyaan ini:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days;</code>
Salin selepas log masuk

Pertanyaan ini bertujuan untuk mengira halaman harian dibuka. Walau bagaimanapun, ia mungkin hanya dipaparkan beberapa hari, walaupun jadual day mempunyai banyak lagi. Masalahnya terletak pada klausa WHERE.

Syarat menyertai ON day.days = DAY(FROM_UNIXTIME(open_date)) sepadan dengan hari dengan betul. Tetapi, WHERE tracking.open_id = 10 menapis selepas gabungan, mengalih keluar sebarang hari tanpa open_id = 10 dalam jadual tracking.

Untuk memasukkan semua hari dari jadual sebelah kiri (day), tanpa mengira padanan dalam tracking, alihkan syarat open_id ke dalam klausa ON:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10
GROUP BY day.days;</code>
Salin selepas log masuk

Pertanyaan yang diperbetulkan ini memastikan semua hari disertakan, menyediakan kiraan buka halaman harian yang lengkap, walaupun beberapa hari kekurangan entri dalam jadual tracking dengan open_id = 10. COUNT(*) akan mengembalikan 0 untuk hari tersebut.

Atas ialah kandungan terperinci Mengapa Gabungan Luar Kiri Saya Hanya Mengembalikan Data Separa Dari Jadual Kiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan