这是一个旧线程,但我花了几个小时试图解决同一个问题。
我的查询有两个连接,一个过滤器和一个SUM函数。我不是SQL专家,但是这帮助我达到了期望的结果,即使连接的表没有要求总和的行,也仍然显示结果。
即使总和没有任何结果,为了显示结果我的关键是GROUP BY。我仍然不是100%确定为什么。
这两种类型的联接是基于这篇文章的选择 - MySQL Multiple Joins in one query?
SELECT registrations.reg_active, registrations.team_id, registrations.area_id, registrations.option_id, registrations.reg_fund_goal, registrations.reg_type, registrations.reg_fee_paid, registrations.reg_has_avatar, users.user_name, users.user_email, users.user_phone, users.user_zip, users.user_age, users.user_gender, users.user_active, SUM(IFNULL(donations.donation_amount,0)) as amt from registrations
INNER JOIN `users`
ON registrations.user_id = users.user_id
AND registrations.event_id = :event_id
LEFT OUTER JOIN `donations`
ON registrations.reg_id = donations.reg_id
GROUP BY donations.reg_id
ORDER BY users.user_name ASC
如果你的问题是可以理解的,你必须在几分钟内很多答案。请更好地解释。 – fancyPants
@tombom对不起,但我不怎么解释得更好。我只是想要一个查询,加上一个字段与左join.But一些记录不在第二个表中具有相同的id.So,这不是完全联合查询。我通过小组解决了我的问题。 –