-1

フォーメーション レベルの最大値を知りたいのですが、1 人のフォーメーション エントリをいくつも持つことができます。

テーブル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 つのサブクエリを含むクエリを作成しましたが、効率的なビューを作成することはできませんでした。

場所を指定せずに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
4

2 に答える 2

0

使わない理由

SELECT fkPerson, fkLevel,orderLevel, formation, place
FROM t_formation as a 
LEFT OUTER JOIN a_level as b ON a.fkLevel = b.idLevel
GROUP BY fkPerson HAVING orderLevel = max(orderLevel)
;

?

于 2013-04-27T15:48:47.887 に答える