我有2个表,student
和family
。
一半学生来周日,另一半学生周六
有些家庭有一个以上的孩子。
家庭支付学费。有些家庭因为一些喜剧而有折扣。
“discount”是“家庭”表格中的字段
在报告中,我需要计算所有利用折扣(按天)折扣的家庭的折扣总和。
当我这样做时,如果一个家庭有2个孩子,结果将返回折扣的两倍,如果3个孩子3倍折扣....
我的查询:
$select_total_discounts =
"SELECT SUM(Discount) AS total_discounts
FROM family, student
WHERE family.Family_ID=student.Family_ID
AND student.Day like '%$Day%' ;" ;
$query= mysql_query($select_total_discounts,$conn) ;
$row = mysql_fetch_assoc($query);
$total_discounts= $row['total_discounts'];
提前谢谢
答案 0 :(得分:1)
如果我理解你的问题,你想要计算家庭的折扣,而不考虑它的学生数量。所以它就是这样(用变量改变日期值):
SELECT SUM(Discount) AS total_discounts
FROM family
WHERE family.Family_ID in (select student.Family_ID from student where student.Day like 'Monday')
所以它总结了在指定日期至少有一名学生的家庭的折扣。如果它有一个,两个,三个或更多学生,则不会影响结果。
使用SQLFiddle:http://sqlfiddle.com/#!2/9b9793/1
答案 1 :(得分:-2)
这不是真正完整的答案,但我在这里发布,所以它是可读的。
我认为您正在寻找类似UNION
:
SELECT sum(value) FROM ((SELECT value FROM table) UNION ALL (SELECT value FROM table2)) sq
UNION
垂直合并您的表格。