Rumah > Artikel > pangkalan data > Bagaimana untuk menggunakan satu sql dalam mysql untuk merangkum berbilang sql yang tidak boleh dikaitkan ke dalam set hasil
Penjelasan ringkas tentang senario perniagaan Untuk memudahkan pemahaman, keperluan perniagaan telah dipermudahkan.
Sekarang ada aktiviti pengedaran Semua orang boleh menjadi pengedar untuk berkongsi aktiviti Setelah seseorang membeli melalui pautan aktiviti yang dikongsi, pengedar akan mempunyai maklumat keuntungan juga tanpa berkongsi pautan Ia adalah pembelian langsung, tetapi tidak akan ada pendapatan pengagihan. Dari segi struktur jadual, semua pesanan disimpan dalam jadual pesanan order
Bagi mereka yang mempunyai hubungan pengedaran, maklumat mengikat pengedaran (pengedar dan orang yang diedarkan) akan direkodkan dalam jadual record
tidak dibeli secara terus melalui pengedaran, Tiada rekod akan ditambahkan pada jadual record
. Kini kami dikehendaki mengira jumlah pesanan dan rekod pengedaran pada hari tersebut, dengan mengandaikan bahawa hari tersebut ialah 2022.11.08.
Jika ia adalah pengiraan statistik yang berasingan, ia sangat mudah, cuma kira jumlah nombor terus:
Kira jumlah pesanan pada hari itu:
SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
Kira jumlah rekod pengedaran pada hari itu:
SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
Tetapi bagaimana untuk merangkum dua maklumat statistik berbeza ke dalam satu set hasil Berikut ialah penyelesaian, gunakan union all
untuk melakukan pertanyaan selari, dan kemudian melakukan pertanyaan penjumlahan. Kaedah pelaksanaan khusus adalah seperti berikut.
Untuk memastikan maklumat parameter yang ditanya adalah konsisten, apabila menanyakan jumlah pesanan, jumlah rekod pengedaran ditambah, dan apabila menanyakan jumlah bilangan rekod pengedaran, jumlah pesanan ditambah Pelaksanaan khusus Seperti berikut:
SELECT COUNT(1) total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
Keputusan pertanyaan adalah seperti berikut:
<. . iaitu penjumlahan langsung kerana nilai medan yang sepadan semuanya adalah pelaksanaan khusus seperti berikut:>select sum(t.total_count) total_count, sum(t.record_count) record_count from (SELECT COUNT(1) total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08') tKeputusan pertanyaan adalah seperti berikut:
Atas ialah kandungan terperinci Bagaimana untuk menggunakan satu sql dalam mysql untuk merangkum berbilang sql yang tidak boleh dikaitkan ke dalam set hasil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!