Rumah >pangkalan data >tutorial mysql >Mengapakah Berbilang LEFT JOIN Menghasilkan Kiraan Lawatan yang Salah?

Mengapakah Berbilang LEFT JOIN Menghasilkan Kiraan Lawatan yang Salah?

Barbara Streisand
Barbara Streisandasal
2025-01-23 12:19:10718semak imbas

Why are Multiple LEFT JOINs Producing Incorrect Visit Counts?

Memahami Kiraan Lawatan Tidak Tepat daripada Berbilang JOIN KIRI

Pertanyaan yang diberikan menjana kiraan lawatan yang salah kerana sifat urutan berbilang operasi LEFT JOIN membawa kepada hasil darab, bukannya aditif.

Pada mulanya, menyertai jadual grocery dengan betul mengira lawatan runcit setiap pengguna. Walau bagaimanapun, LEFT JOIN berikutnya dengan fishmarket mencipta berbilang baris untuk setiap pengguna, dengan berkesan mendarabkan kiraan lawatan kedai runcit dengan bilangan lawatan pasar ikan untuk setiap pengguna. Ini menerangkan kiraan "12" yang salah untuk pengguna yang melawat kedua-dua kedai.

Penyelesaian: Subkueri untuk Pengagregatan Tepat

Masalah diselesaikan menggunakan subkueri untuk mengagregat secara bebas kiraan lawatan untuk setiap kedai:

<code class="language-sql">SELECT u.id,
       u.account_balance,
       (SELECT COUNT(*) FROM grocery WHERE user_id = u.id) AS "# of grocery visits",
       (SELECT COUNT(*) FROM fishmarket WHERE user_id = u.id) AS "# of fishmarket visits"
FROM users u
ORDER BY u.id;</code>

Pertanyaan yang disemak ini mengira dan memaparkan lawatan runcit dan pasar ikan dengan tepat untuk setiap pengguna, memberikan data agregat yang betul.

Atas ialah kandungan terperinci Mengapakah Berbilang LEFT JOIN Menghasilkan Kiraan Lawatan yang Salah?. 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