Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data daripada Berbilang Jadual MySQL Menggunakan Sambungan Luar Pilihan dan Mengendalikan Nilai NULL?

Bagaimana untuk Mendapatkan Data daripada Berbilang Jadual MySQL Menggunakan Sambungan Luar Pilihan dan Mengendalikan Nilai NULL?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 15:34:10166semak imbas

How to Retrieve Data from Multiple MySQL Tables Using Optional Outer Joins and Handle NULL Values?

Mengambil Data daripada Berbilang Jadual dengan Gabungan Luar Pilihan dalam MySQL

Apabila menanyakan data daripada berbilang jadual, adalah perkara biasa untuk menghadapi situasi di mana tidak semua baris dalam satu jadual mempunyai baris yang sepadan dalam satu lagi. Dalam kes sedemikian, adalah wajar untuk mendapatkan semula semua baris daripada satu jadual sambil mengisi data yang hilang dengan ruang letak.

Pertimbangkan senario berikut: anda mempunyai dua jadual, satu untuk kategori (bertajuk "kategori") dan satu untuk produk (bertajuk "produk"). Jadual "produk" mempunyai lajur "ownerid" yang merujuk lajur "id" dalam jadual "kategori".

Contoh Pertanyaan

Untuk memilih semua kategori dan harga minimum dan maksimum untuk setiap satu, anda boleh menggunakan pertanyaan berikut:

SELECT
    sc.*,
    MIN(s.price) AS minp,
    MAX(s.price) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

Outer Sertai

Pengubahsuaian utama di sini ialah penggunaan pernyataan LEFT JOIN. Tidak seperti JOIN DALAM, yang hanya mengembalikan baris yang memenuhi syarat gabungan, OUTER JOIN mengembalikan semua baris dari jadual kiri (dalam kes ini, "kategori") dan mengisi nilai yang hilang dari jadual kanan ("produk") dengan NULL .

Mengendalikan Nilai NULL

Walau bagaimanapun, NULL nilai boleh menjadi tidak diingini dalam senario tertentu. Untuk mengembalikan nilai lalai (seperti 0) dan bukannya NULL untuk kategori tanpa produk, anda boleh menggunakan fungsi IFNULL:

SELECT
    sc.*,
    IFNULL(MIN(s.price), 0) AS minp,
    IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

Pertimbangan

Akhir sekali, ia adalah penting untuk memutuskan sama ada untuk menggunakan NULL atau nilai lalai untuk data yang hilang, bergantung pada keperluan khusus aplikasi anda. Nilai nol menunjukkan bahawa tiada data sebenarnya, manakala nilai lalai mewakili data yang diandaikan. Memahami perbezaan ini adalah penting untuk mengekalkan integriti data.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data daripada Berbilang Jadual MySQL Menggunakan Sambungan Luar Pilihan dan Mengendalikan Nilai NULL?. 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