2016-07-23 23 views
1

私は2台を持っています。 t1以下のようにt1t2MySQLのPHPの合計()乗算?

データ、kidはPLANID、uidあるbuytime数量を購入され、ユーザーIDです。

+---------+-------------+-------------+---------------+ 
| 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  | 
+---------------------------------+ 

を私は次のようにMySQLでSUMを行うしたいと思います:

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 - そう、あなたは定義する必要がある場合これらの欠損値は何に等しくなければなりません。必要に応じて、しかし​​3210を使用することが役立つはずです。