2016-07-23 2 views
1

есть 2 стол. t1 И t2Mysql Php Sum() Умножение?

данных, как показано ниже t1, kid является planID, uid является Userid, buytime это купить количество.

+---------+-------------+-------------+---------------+ 
| kid  | uid   | buytime1 | buytime2  | 
+---------+-------------+-------------+---------------+ 
| 1  | 1   | 10   | 5    | 
| 1  | 2   | 1   | 0    | 
| 1  | 3   | 3   | 5    | 
| 2  | 4   | 1   | 10   | 
| 3  | 5   | 20   | 6    | 
+---------+-------------+-------------+---------------+ 

t2 данных:

+---------+-----------+-----------+ 
| ID  | costb1 | costb2 | 
+---------+-----------+-----------+ 
| 1  | 100  | 200  | 
| 2  | 300  | 500  | 
| 3  | 1000  | 2000  | 
+---------------------------------+ 

Я хотел бы сделать SUM в MySQL, как:

SUM buytime1 * costb1 + buytime2 * costb2 Where t1.kid = t2.id

$query = DB::query("SELECT SUM(something like buytime1 * costb1 + buytime2 * costb2) FROM ".DB::table('t1')." t1 LEFT JOIN ".DB::table('t2')." t2 ON (t1.kid = t2.id)"); 

поэтому окончательный результат должен быть 40700

10 * 100 + 5 * 200 = 2000 
1 * 100 + 0 * 200 = 100 
3 * 100 + 5 * 200 = 1300 
1 * 300 + 10 * 500 = 5300 
20 * 1000 + 6 * 2000 = 32000 

Так что я должен изменить свое кодирование в query?

ответ

2

Просто используйте sum, как вы указали - это приведет к 40700:

select sum((t1.buytime1 * t2.costb1) + (t1.buytime2 * t2.costb2)) 
from t1 
    join t2 on t1.kid = t2.id 

Не уверен, что если вам нужен outer join - если это так, то вам необходимо определить какие эти недостающие значения должны быть равны. Использование coalesce, хотя должно помочь там, если необходимо.