2016-07-23 18 views
1

Ich habe 2 Tabelle. t1 UND t2Mysql PHP Sum() Multiplikation?

Daten wie unten t1, kid ist planID, uid Userid ist, ist buytime Menge kaufen.

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

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

Ich möchte die SUM in MySQL tun:

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)"); 

so sollte das Endergebnis sein 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 

Also was sollte ich meine Codierung in der query bearbeiten?

Antwort

2

Verwenden Sie einfach sum wie Sie zur Verfügung gestellt - dies in 40700 führen wird:

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

Nicht sicher, ob Sie brauchen die outer join - wenn ja, dann müssen Sie definieren was diese fehlenden Werte sollten gleich sein. Die Verwendung von coalesce sollte jedoch dort helfen, wenn nötig.