2017-06-07 133 views
0

我有一個像下面的SQL函數:計數的總和SQL

SELECT 
    SUM(3 * tb_spp.bulanan_spp), 
    COUNT(tb_bulan.id) AS JUMLAH, 
    SUM(count(tb_bulan.id) * tb_angsuran_spp.nominal_spp), 
SUM((3 * tb_spp.bulanan_spp) - (3 * tb_angsuran_spp.nominal_spp)) as SPP 
FROM tb_spp, tb_angsuran_spp, tb_bulan 
where tb_spp.id_siswa = tb_angsuran_spp.id_siswa and tb_spp.id_siswa = '1' 
and tb_bulan.id = tb_angsuran_spp.id_bulan 
and tb_bulan.id between '1' and '2' 

但是當我運行出現錯誤信息「#1111 - 無效使用組功能的」

的原因是什麼以及解決方案如何?

+0

此查詢充滿了問題。您可以先告訴我們您正在使用哪個數據庫。 –

+0

我檢查錯誤後是命令'SUM(count(tb_bulan.id)* tb_angsuran_spp.nominal_spp)'它應該是怎麼回事? –

回答

0

sum(count())通常不被允許。還有一些其他的變化我想提出的查詢,以及:

SELECT SUM(3 * s.bulanan_spp), 
     count(b.id) as JUMLAH, 
     SUM(a.nominal_spp), 
     SUM((3 * s.bulanan_spp) - (3 * a.nominal_spp)) as SPP 
FROM tb_spp s JOIN 
    tb_angsuran_spp a 
    on s.id_siswa = a.id_siswa join 
    tb_bulan b 
    on b.id = a.id_bulan 
where s.id_siswa = 1 and 
     b.id between 1 and 2; 

注:

  • 決不FROM子句中使用逗號。 始終使用使用正確的,明確的JOIN語法。
  • 表別名使查詢更容易編寫和讀取。
  • ID通常是數字;因此我刪除了單引號(它們適用於字符串)。

我不確定您的金額和數量是否會產生正確的答案。如果不是,請詢問另一個問題,包括樣本數據和期望的結果。這個答案解決了這個問題中的語法問題。