簡體   English   中英

跨多個表的SQl查詢計算

[英]SQl query calculations across multiple tables

好的,我現在有3個數據庫表:

  • 用戶
    • id:1,2
    • name:User1,User2
  • 公司
    • id:1,2,3
    • share_price:10.00,0.45,5.98
  • 投資組合
    • user_id:1,1,2
    • company_id:1,2,1
    • amount_of_shares:200,100,30

你知道,這是一個基本的股市模擬。 我需要根據他們的總投資組合價值獲得前5名用戶,其計算方式如下:

companies.share_price * portfolios.amount_of_shares

請記住,1個用戶可以從他的投資組合中的多個公司獲得股票,選擇所有數據然后在PHP中循環它似乎是浪費,因為理論上我可能有大約200家公司...所以我想知道是否可以編寫一個SQL查詢來計算每個公司所擁有的股票的價值,然后將所有這些值加起來只產生一個變量,這樣我就可以做ORDER BY和LIMIT 5(獲得Top5表現者)

編輯:我正在為這個項目使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM