Bagaimana untuk menjumlahkan berbilang lajur data daripada berbilang jadual dalam mysql?
P粉615886660
P粉615886660 2023-09-11 15:48:19
0
1
450

Saya ada 4 meja:

1-Pembekal

ID_A Nama pembekal
1 Epal
2 Xiaomi
3 Nokia
4 OPPO

2-Mulakan baki

ID_B Imbangan permulaan
1 1000
2 1000
3 1000
4 kosong

3- Invois

ID_C Nilai invois
1 200
1 500
2 800
3 250
3 400
4 kosong

4-Kembali

ID_D Pulangan_nilai
1 100
2 50
2 25
3 kosong
4 kosong

Kaedah aritmetik untuk memaparkan data sebagai hasilnya:

Baki Permulaan + Invois - Pulangan = Baki Akhir

Saya cuba menggunakan UNION dan JOINS dalam mysql:

SELECT null , Supplier_name , ID_A , SUM(Invoice_value) , null , null FROM Suppliers inner JOIN Invoices ON ID_A = ID_C group by ID_A UNION ALL SELECT null , Supplier_name , ID_A , null , SUM(Return_value), null FROM Suppliers left JOIN Returns ON ID_A = ID_D group by ID_A UNION ALL SELECT Start Balance , Supplier_name, ID_A , null , null ,( Start Balance + ifnull(SUM(Invoice_value),0) - ifnull(SUM(Return_value),0) ) FROM Suppliers left JOIN Start Balance ON ID_A = ID_B left JOIN Invoices ON ID_A = ID_C left JOIN Returns ON ID_A = ID_D group by ID_A

Saya jangkakan keputusan ini ialah:

Imbangan permulaan Nama pembekal ID_A Nilai invois Pulangan_nilai Imbangan_Akhir
1000 Epal 1 700 100 1600
1000 Xiaomi 2 800 75 1725
1000 Nokia 3 650 kosong 1650
kosong OPPO 4 kosong kosong kosong

Tetapi ia tidak berfungsi dengan baik, ia menunjukkan keputusan dalam baris yang berbeza dan pengiraan baki akhir adalah salah Apakah kod yang betul untuk memaparkan hasil ini

P粉615886660
P粉615886660

membalas semua (1)
P粉946336138

Anda boleh menjumlahkan jumlah dalam subkueri dan menyertainya bersama

SELECT `Start Balance`, Supplier_name , ID_A , `Invoice_value` , `Return_value` , `Start Balance` + IFNULL(Invoice_value,0) - ifnull(Return_value,0) total FROM Suppliers left JOIN Start_Balance ON ID_A = ID_B left JOIN ( SELECT `ID_C`, SUM(`Invoice_value`) `Invoice_value` FROM Invoices GROUP By ID_C) i ON ID_A = ID_C left JOIN ( SELECT `ID_D`, SUM(`Return_value`) `Return_value` FROM Returns GROUP BY `ID_D`) r ON ID_A = ID_D
Baki Permulaan Nama pembekal ID_A Nilai_invois Pulangan_nilai Jumlah
1000 Epal 1 700 100 1600
1000 Xiaomi 2 800 75 1725
1000 Nokia 3 650 kosong 1650
kosong OPPO 4 kosong kosong kosong

Violin

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!