我想知道人的最大形成水平,并且一个人可以有许多编队条目。如何通过子查询改进/简化查询?
表t_formation
idFormation | fkPerson | fkLevel | place
------------------------------------------------
1 | 1 | 2 | Oxford
2 | 2 | 1 | PlaySchool
3 | 1 | 3 | Trinity High
4 | 1 | 1 | My School
5 | 2 | 3 | My High
表a_level
idLevel | orderLevel | formation
-------------------------------------
1 | 1 | School
2 | 3 | University
3 | 2 | High school
我需要得到的是以下查询或所需的查询结果 (最大订单水平与地层每个人和他们研究的地方,最大编队)
fkPerson | maxOrderLevel | formation | place
----------------------------------------------------
1 | 2 | Univertity | Oxford
2 | 3 | High school | My High
为了做到这一点,我做了一个查询与2个subquerys但它是不可能创造一个高效的视图。
查询SQL没有的地方,每个人的这种获得最大的形成
select fkPerson, a_level.orderLevel, a_level.formation
from (
select fkPerson, max(a_level.orderlevel) as ordermax
from t_formation left join a_level on t_formation.fkLevel = a_level.idLevel
group by fkPerson
) as form left join a_level on form.ordermax = a_level.orderlevel
为什么不包括'1和3'? – 2013-04-24 08:45:42
你能解释一下你的问题吗? – 2013-04-24 08:51:47
*我用2个subquerys *进行了查询。然后首先显示查询。同时解释你的预期结果。提出问题后请不要离开。 – hims056 2013-04-24 08:58:02