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
Lepaskan: 2024-12-21 15:34:10
asal
232 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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 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