Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data daripada Dua Jadual MySQL dengan Koresponden yang Hilang?

Bagaimana untuk Mendapatkan Data daripada Dua Jadual MySQL dengan Koresponden yang Hilang?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 03:36:11915semak imbas

How to Retrieve Data from Two MySQL Tables with Missing Correspondents?

Memilih daripada Dua Jadual dalam MySQL dengan Koresponden Hilang

Untuk mendapatkan semula data daripada dua jadual dalam MySQL dan mengendalikan kes di mana tidak semua baris dalam satu jadual mempunyai baris yang sepadan dalam satu lagi, anda boleh menggunakan gabungan luar. Pendekatan ini berbeza daripada kaedah gabungan tersirat yang lapuk dan menawarkan fleksibiliti yang lebih besar.

Pertimbangkan contoh berikut:

Anda mempunyai dua jadual, kategori (dengan id lajur dan tajuk) dan produk (dengan id lajur , pemilik, tajuk dan harga, di mana id rujukan pemilik dalam kategori jadual).

Pertanyaan anda bertujuan untuk mendapatkan semula semua kategori dan harga minimum dan maksimumnya, dikumpulkan mengikut ID kategori. Walau bagaimanapun, pertanyaan semasa mengecualikan kategori tanpa produk yang sepadan.

Untuk menyelesaikan isu ini, gunakan LEFT JOIN:

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

LEFT JOIN memastikan semua baris daripada jadual kategori disertakan, walaupun tiada baris yang sepadan dalam jadual produk. Fungsi IFNULL menetapkan 0 kepada minp dan maxp untuk kategori tanpa produk, menghalang nilai NULL daripada dipaparkan.

Sebagai alternatif, anda mungkin memilih untuk mengembalikan NULL untuk kategori ini dan bukannya 0, bergantung pada keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data daripada Dua Jadual MySQL dengan Koresponden yang Hilang?. 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