为什么?
SUM()
对行计数两次并在此处显示实际结果的两倍?
status
的值为0
发票编号
inv_id.s_id
它必须表现出来
4
基于中的行号
发票
8
.
如果
fee.id
GROUP_BY
然后显示实际的总和,但相同的学生id开始重复。
-
SQL Fiddle
班
id | ttl
1 | One
2 | Two
部分
id | ttl
1 | A
2 | B
费用
id | ttl
1 | Annual
2 | Monthly
id | ttl | cls | sec
1 | John| 1 | 1
2 | Paul| 1 | 1
3 | Rina| 2 | 1
证券交易费
id | c_id| s_id| f_id| fee
1 | 1 | 1 | 1 | 1000
2 | 2 | 1 | 2 | 560
发票编号
id | s_id| ft_id | status
1 | 1 | 1 | 0
2 | 1 | 2 | 0
3 | 1 | 3 | 0
4 | 1 | 4 | 0
Mysql数据库
SELECT
student.id, student.ttl AS stdt,
cls.ttl AS cls,
sec.ttl AS sec,
GROUP_CONCAT(DISTINCT fee.id, '.', fee.ttl, '-', sec_fee.fee,'<br/>' ORDER BY sec_fee.f_id) AS amnt,
SUM(inv_id.status=0) AS upad,
SUM(inv_id.status=1) AS pad
FROM
student
JOIN
cls ON cls.id=student.cls
LEFT JOIN
sec ON sec.id=student.sec
LEFT JOIN
inv_id ON inv_id.s_id = student.id
LEFT JOIN
sec_fee ON sec_fee.c_id = student.cls
LEFT JOIN
fee ON fee.id = sec_fee.f_id
WHERE
cls.id = 1