【问题标题】:MySQL include a repeating value from another tableMySQL包含另一个表中的重复值
【发布时间】:2016-11-17 22:39:53
【问题描述】:

我有一个用户个人资料,其中存储了一个代表投资组合价值(货币)的数字。我有另一个表格列出了推荐的投资购买,以及按风险因素分配给每个基金的投资组合百分比。当百分比发生变化或投资组合价值发生变化时,我需要重新计算基金购买的美元价值。

我不想为每个客户创建一个“真实”表格,只是为了重复计算投资组合的价值。如何构造一个查询来为客户选择投资组合值并将其包含在每一行中以供计算使用?

User   PortfolioValue
1      200,000
2      50,000
-----------------------------

Asset     Fund  Risk1Pct   Risk2Pct  
CashE     MM       6%         4%
Fixed     PIMCO    4%         6%
US Equity UEF     50%        75%

Desired Sample Output for User 1 via table generator (visual table, not database table)

Asset     Fund  Risk1Pct  R1Calculation    Risk2Pct  R2Calculation
CashE     MM       6%    (6% * 200,000)     4%      (4% * 200,000)
Fixed     PIMCO    4%    (4% * 200,000)     6%      (6% * 200,000)
US Equity UEF     50%    (50% * 200,000)   75%     (75% * 200,000)

投资组合值已添加到具有键值结构的 wp_usermeta 中。投资组合信息位于名为 demodb 的表中。

风险百分比为浮点数。

更新 -------------------------------------------- 我有需要添加到 usermeta 中的值(user_id、meta_key、meta_value)。

有 9 个公司表,其中包含每个公司的投资选项(company_id、assetclass、fundname、risk1pct、risk1action、risk2pct、risk2action、risk3pct、risk3action、risk3pct、risk4action)。

我创建了一个表 userportfolio(user_id、company_id、total401k、companystockamt、loansamt、withdrawsamt)。

我正在尝试将所有内容连接起来,以便我输出诸如 user_id、company_id、assetclass、fundname、(risk1pct * total401k)、risk1action、(risk2pct * total401k)、risk2action、(risk3pct * total401k)、risk3action、 (risk4pct * total401k), risk4action.

我不知道我是否真的需要 userportfolio 表。这个信息是架构的意思吗?

【问题讨论】:

  • 数据库中Risk1PctRisk2Pct字段的格式(字段类型)是什么?表名是什么?

标签: php mysql wordpress


【解决方案1】:

假设您的 % 值是小数(我理解这个问题),我们可以通过简单的连接来做到这一点:

让我们调用您的第一个表u(用户)和您的第二个表ri(推荐投资)

选择 u.用户, u.PortfolioValue, ri.资产, ri.基金, ri.Risk1Pct, (u.PortfolioValue * ri.Risk1Pct) AS `R1Calculation`, ri.Risk2Pct, (u.PortfolioValue * ri.Risk2Pct) AS `R2Calculation` 从表 1 `u` 加入表2`ri`

【讨论】:

  • 噢,我喜欢这样。那么这是否意味着我需要为投资组合价值建立一个单独的表才能以这种方式获得它?它当前存储在 wp_usermeta 中,这需要使用 meta_key 'PortfolioValue' 作为键来选择美元金额的 meta_value。有没有办法“嵌套”选择语句?
  • 绝对!你可以这样做
  • 绝对!你可以这样做:
     SELECT ... FROM table u JOIN ( SELECT * FROM wp_usermeta WHERE meta_key = 'PortfolioValue' ) ri 
    这不是一个完整的解决方案。如果您想分享您的整个架构,我可以提供更多帮助。
  • 我按照说明在原始帖子中添加了有关架构的更多信息。如果我需要添加更多内容,请告诉我。
  • 这与 wp_usermeta 上的一些触发器一起导致了此问题的解决方案。谢谢!
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多