Mysql 跨多个表的SQl查询计算

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中循环使用似乎是浪费,因为理论上我可以有大约

好的,我现在有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中循环使用似乎是浪费,因为理论上我可以有大约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