Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Semua Kategori dan Harga Produk Minimum/Maksimumnya, Termasuk Kategori Tanpa Produk, dalam MySQL?
Memilih daripada Berbilang Jadual dengan Surat Menyurat Hilang dalam MySQL
Untuk membuat pertanyaan dengan berkesan merentas berbilang jadual, walaupun dalam senario yang tidak semua baris dalam satu jadual mempunyai entri yang sepadan dalam yang lain, MySQL menyediakan konsep gabungan luar. Pertimbangkan senario kedai dalam talian dengan kategori dan jadual produk.
Andaikan kami ingin mendapatkan semua kategori dan mengira harga minimum dan maksimum bagi setiap satu. Walau bagaimanapun, kami ingin memasukkan kategori tanpa sebarang produk dan menetapkan harga min dan maksnya kepada 0. Pertanyaan asal:
SELECT sc.*, MIN(s.price) AS minp, MAX(s.price) AS maxp FROM categories AS sc, products AS s WHERE s.ownerid=sc.id GROUP BY sc.id
Mengecualikan kategori tanpa produk kerana keadaan sambungan dalaman. Untuk memasukkan semua kategori, kami menggunakan 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 mengekalkan semua baris dalam jadual kategori (sc), membenarkan pertanyaan untuk mendapatkan semula semua kategori, termasuk yang tanpa produk. Fungsi IFNULL menetapkan nilai nol (yang berlaku apabila tiada produk yang sepadan) kepada 0, memastikan minp dan maxp sentiasa dikembalikan dengan nilai yang sah.
Pendekatan ini memastikan bahawa pertanyaan mendapatkan semula semua kategori, tanpa mengira sama ada mereka mempunyai produk yang sepadan dan ia menetapkan 0 dengan betul untuk maklumat harga yang tiada.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Semua Kategori dan Harga Produk Minimum/Maksimumnya, Termasuk Kategori Tanpa Produk, dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!