Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data daripada Berbilang Jadual MySQL Menggunakan Sambungan Luar Pilihan dan Mengendalikan Nilai NULL?
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!