2015-01-15 105 views
1

我有三个表MySQL的选择最大的总和值

----+------- 
id | ref1 | 
----+------- 
2 | 10 | 
----+------- 
2 | 11 | 
----+------- 
3 | 12 | 
----+------- 

表2

+-------+------- 
|ref1 | ref2 | 
-------+-------- 
|10  | 20 | 
--------+------- 
|10  | 22 | 
--------+------- 
|11  | 35 | 
--------+------- 
|26  |47 | 

表3

-----+------ 
ref2 |price| 
-----+------ 
20 |50 | 
-----+------ 
22 |5 | 
-----+----- 
35 |10 | 

我的问题是怎样才能得到价格的总和根据:表人的表2和表2 =的REF1 REF1的表3 = REF2的REF2时,ID人= 2

Fot的,我只需要采取最高价格,如果我有表2双列(表2的裁判10我需要的只有价格50)

结果应该是50 + 10

我希望这是可以理解的

并且谢谢

+0

我想你可能正在寻找某种'JOIN'。查询的哪部分需要帮助? – ryanyuyu 2015-01-15 16:10:05

回答

0

你可以从每个人的ID和REF1列的组合表3最大值在子查询

然后,您可以得到maximum这些值

select t.id, max(refPrice) as maxPrice 
from 
(
select p.id , p.ref1 + max(t3.price) as refPrice 
from person p 
join table2 t2 
on p.ref1 = t2.ref1 
join table3 t3 
on t2.ref2 = t3.ref2 
group by p.id, p.ref1 
)t 
group by t.id 
+0

谢谢,它的效果很好。 – osiris23 2015-01-16 09:50:45

0

的试试这个方法...

SELECT SUM(GroupSum) as 
    TotalSum 
FROM(
    SELECT MAX(t3.price) as GroupSum FROM Person p 
    INNER JOIN Table2 t2 ON p.ref1=t2.ref1 
    INNER JOIN Table3 t3 ON 
    t2.ref2=t3.ref2 WHERE p.id=2 
    GROUP BY p.id,p.ref1 
    ) ttl 
GROUP BY t.id 
+0

也谢谢你。它工作正常 – osiris23 2015-01-16 09:51:09