Mysql SUM返回具有多个左联接的双值
我有一个SQL查询,其中SUM aggregate函数只返回两倍的所有值。我完全不明白这是怎么发生的。这是一个问题Mysql SUM返回具有多个左联接的双值,mysql,sql,Mysql,Sql,我有一个SQL查询,其中SUM aggregate函数只返回两倍的所有值。我完全不明白这是怎么发生的。这是一个问题 SELECT st.id, u.id AS user_id, st.student_code, spd.first_name, spd.middle_name, spd.last_name, spd.birth_date, classes.`class_name`, sections.`section_name`, sed.`roll_n
SELECT
st.id,
u.id AS user_id,
st.student_code,
spd.first_name,
spd.middle_name,
spd.last_name,
spd.birth_date,
classes.`class_name`,
sections.`section_name`,
sed.`roll_no`,
sgd.first_name AS gardian_first_name,
sgd.middle_name AS gardian_middle_name,
sgd.last_name AS gardian_last_name,
sgd.contact_no,
SUM(sfd.`final_fee`) AS total_calculated_fee,
SUM(sfd.`total_paid_amount`) AS total_paid_amount,
SUM(sfd.`total_due_amount`) AS total_due_amount
FROM
students st
LEFT JOIN users u
ON st.`id` = u.`student_id`
LEFT JOIN student_personal_details spd
ON st.`id` = spd.`student_id`
LEFT JOIN student_gardian_details sgd
ON st.`id` = sgd.`student_id`
LEFT JOIN student_education_details sed
ON st.`id` = sed.`student_id`
LEFT JOIN student_hostel_details shd
ON st.`id` = shd.`student_id`
LEFT JOIN classes
ON sed.`class_id` = classes.`class_id`
LEFT JOIN sections
ON sed.`section_id` = sections.`id`
LEFT JOIN student_fee_details sfd
ON st.`id` = sfd.`student_id`
WHERE st.is_active = 1 AND st.`id` = 2
GROUP BY sfd.`student_id`
LIMIT 0, 10
我在所有三个字段中都使用了distinct,但中间的一个字段返回1/4的值。
有谁能帮我一下吗如果至少有两个连接最终为同一个值匹配多行,那么你会得到相乘的值-比如说
类
匹配两行,a
和b
,而节
匹配两行,1
和2
。您的结果集现在将以所有组合包含4行:a,1
,a,2
,b,1
和b,2
。如果没有您的数据,我无法告诉您发生这种情况的原因,但它正在发生。那么您有什么建议?您需要确定哪些连接条件不会导致1-1匹配。同样,我们没有让您的数据删除“分组依据”并查看返回的行以查看哪些行是重复的。使用子查询并加入它们。