Mysql 跨多个表的SQl查询计算
好的,我现在有3个数据库表:Mysql 跨多个表的SQl查询计算,mysql,sql,Mysql,Sql,好的,我现在有3个数据库表: 使用者 身份证号码:1,2 名称:User1,User2 公司 身份证号码:1、2、3 股价:10.00,0.45,5.98 投资组合 用户id:1、1、2 公司编号:1,2,1 股份数量:200、100、30 正如你所知,这是一个基本的股市模拟。我需要根据他们的总投资组合值获得前5名用户,计算如下: 公司。股价*投资组合。股票金额 请记住,一个用户的投资组合中可以有多家公司的股票,选择所有数据然后在PHP中循环使用似乎是浪费,因为理论上我可以有大约
- 使用者
- 身份证号码:1,2
- 名称:User1,User2
- 公司
- 身份证号码:1、2、3
- 股价:10.00,0.45,5.98
- 投资组合
- 用户id:1、1、2
- 公司编号:1,2,1
- 股份数量:200、100、30
公司。股价*投资组合。股票金额
请记住,一个用户的投资组合中可以有多家公司的股票,选择所有数据然后在PHP中循环使用似乎是浪费,因为理论上我可以有大约200家公司。。。因此,我想知道是否有可能编写一个SQL查询,计算每个公司拥有的股票的价值,然后将所有这些价值相加,只生成一个变量,这样我就可以按顺序执行并限制5(获得前5名执行者)
编辑:我正在为这个项目使用CodeIgniter,如果这有什么不同的话。完美!非常感谢你。
SELECT *, SUM(amount_of_shares*c.share_price) as total FROM `portfolios`
LEFT JOIN companies c ON c.id = portfolios.company_id
GROUP BY `user_id`
ORDER BY total DESC
LIMIT 5
select u.name, sum(c.share_price * p.amount_of_shares) as total
from portfolios p
inner join companies c on p.company_id = c.id
inner join users u on p.user_id = u.id
group by u.name
order by total desc
LIMIT 5