我需要用distinct来计算数量的总和。
Bellow我的数据模型
汽车
身份证 | 名称 |
---|---|
1 | 宝马 |
用户
身份证 | 名称 |
---|---|
1 | 约翰 |
二 | 爱丽丝 |
三 | 多伊 |
car_users
车辆ID | 用户ID |
---|---|
1 | 1 |
1 | 二 |
1 | 三 |
公司
身份证 | 数量 |
---|---|
1 | 一千 |
二 | 一千 |
user_companies
用户ID | 公司ID |
---|---|
1 | 1 |
二 | 1 |
三 | 二 |
我的问题是,我需要得到一个金额的公司表与不同的喜欢
SELECT c.id, c.name, sum(company.amount) amount
FROM cars c
LEFT JOIN car_users cu ON c.id = cu.car_id
LEFT JOIN users u ON u.id = cu.user_id
LEFT JOIN user_companies uc ON u.id = uc.user_id
LEFT JOIN companies comp ON comp.id = uc.company_id
因此,我需要获得2000
的金额,因为用户1和1拥有相同的公司
这实际上是一个返回3000
的请求,因为计算是在user_compnaies表的3个用户上完成的
PS:如果有人在DQL(Symfony)中有这个请求,我会很高兴
谢谢你的帮助。
1条答案
按热度按时间k10s72fa1#
您可以使用以下查询来实现这一点:
在内部查询中,您将使用您的
DISTINCT
,它将过滤掉重复的公司1
。然后你可以对这个结果求和。实际上我不确定,这在DQL教义中是否可能。但是你可以在那里使用内联SQL,这应该可以工作。