2016-11-17 4 views
0

У меня есть профиль пользователя, в котором хранится число, представляющее значение портфеля (валюта). У меня есть еще одна таблица, в которой перечислены рекомендуемые инвестиционные покупки, причем процентная доля портфеля будет распределяться по каждому фонду по коэффициенту риска. Мне нужно пересчитать значение стоимости покупки в долларах, когда меняются проценты, или когда изменяется стоимость портфеля.MySQL включает повторяющееся значение из другой таблицы

Я не хочу создавать «настоящую» таблицу для каждого клиента, чтобы просто повторить значение портфеля для вычислений. Как я могу построить запрос для выбора значения портфеля для клиента и включить его для каждой строки для использования вычислений?

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, класс активов, имя фонда, risk1pct, risk1action, risk2pct, risk2action, risk3pct, risk3action, risk3pct, risk4action).

Я создал таблицу userportfolio (user_id, company_id, total401k, companystockamt, loansamt, removealsamt).

Я пытаюсь подключить все так, чтобы у меня были такие, как user_id, company_id, класс активов, имя фонда (risk1pct * total401k), risk1action (risk2pct * total401k), risk2action (risk3pct * total401k), risk3action , (risk4pct * total401k), risk4action.

Я не могу сказать, нужна ли мне таблица userportfolio. Это информация о том, что подразумевается под схемой?

+0

Каковы форматы (типы полей) полей «Risk1Pct» и «Risk2Pct» в базе данных? И каковы имена таблиц? – Hobo

ответ

0

Если предположить, что% значения десятичные (и что я понимаю вопрос), мы можем сделать это с помощью простого присоединения:

Давайте назовем ваш первым стол u (пользователей) и вашей второй таблица ri (рекомендуемые инвестиций)

 
SELECT 
    u.User, 
    u.PortfolioValue, 
    ri.Asset, 
    ri.Fund, 
    ri.Risk1Pct, 
    (u.PortfolioValue * ri.Risk1Pct) AS `R1Calculation`, 
    ri.Risk2Pct, 
    (u.PortfolioValue * ri.Risk2Pct) AS `R2Calculation` 
FROM table1 `u` 
JOIN table2 `ri` 
+0

Оооо, мне это нравится. Так значит ли это, что мне нужно построить отдельную таблицу для стоимости портфеля, чтобы получить ее таким образом? В настоящее время он хранится в wp_usermeta, для чего meta_key 'PortfolioValue' используется как ключ для выбора meta_value суммы в долларах. Есть ли способ «вложить» выражения select? –

+0

Абсолютно! Вы можете сделать что-то вроде этого –

+0

Абсолютно! Вы можете сделать что-то вроде этого:

 SELECT ... FROM table 'u' JOIN ( SELECT * FROM wp_usermeta WHERE meta_key = 'PortfolioValue' ) 'ri' 
Это еще не все. Если вы хотите поделиться всей своей схемой, я могу помочь немного больше. –