php 我需要根据公司情况计算金额

m2xkgtsf  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(89)

我需要用distinct来计算数量的总和。
Bellow我的数据模型

汽车

身份证名称
1宝马

用户

身份证名称
1约翰
爱丽丝
多伊

car_users

车辆ID用户ID
11
1
1

公司

身份证数量
1一千
一千

user_companies

用户ID公司ID
11
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)中有这个请求,我会很高兴
谢谢你的帮助。

k10s72fa

k10s72fa1#

您可以使用以下查询来实现这一点:

SELECT SUM(a.amount), id, name
FROM (
SELECT DISTINCT uc.company_id, c.id, c.name, comp.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
) AS a
GROUP BY a.id, a.name

在内部查询中,您将使用您的DISTINCT,它将过滤掉重复的公司1。然后你可以对这个结果求和。
实际上我不确定,这在DQL教义中是否可能。但是你可以在那里使用内联SQL,这应该可以工作。

相关问题