2017-06-07 72 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通常是数字;因此我删除了单引号(它们适用于字符串)。

我不确定您的金额和数量是否会产生正确的答案。如果不是,请询问另一个问题,包括样本数据和期望的结果。这个答案解决了这个问题中的语法问题。