2

データベースに最年少アスリートを表示する必要があります。MIN(Athlete.Age) は問題なく動作しますが、明らかに名前も必要です。選択する名前を追加すると、約 5 つの結果が得られます。MIN(Age) と彼女の名前だけを表示するにはどうすればよいですか?

select MIN(Athlete.Age), Athlete.Name
 from (((Country INNER JOIN Athlete ON Country.Country_Code = Athlete.Country_Code)
  INNER JOIN Athlete_event
   ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2)
  INNER JOIN Event
   ON Event.Event_ID = Athlete_event.Event_ID2)
 Where Athlete.Athlete_ID = Event.Award_Gold
 GROUP BY Athlete.Name;
4

4 に答える 4

4

同じ年齢のアスリートが 5 人いる場合があります。クエリは、どちらが必要かわかりません。

データベースに生年月日がある場合は、それを使用してみてください。

[編集] 保存期間は、一般的には良い考えではありません。

[編集 2] 人々が同じ誕生日を共有する可能性があることに注意してください。

于 2012-10-29T15:31:14.233 に答える
0
select * 
from
(
    select Athlete.Age, Athlete.Name
    from (((Country INNER JOIN Athlete ON Country.Country_Code = Athlete.Country_Code)
      INNER JOIN Athlete_event
       ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2)
      INNER JOIN Event
       ON Event.Event_ID = Athlete_event.Event_ID2)
     Where Athlete.Athlete_ID = Event.Award_Gold  
    order by Age
) v
where rownum=1;
于 2012-10-29T15:28:05.637 に答える
0

この行をクエリに追加します

HAVING MIN(Athlete.Age) =  (SELECT MIN(AGE) from Athlete)

最終的なクエリは次のようになります

SELECT MIN(Athlete.Age),
        Athlete.NAME
FROM (((Country INNER JOIN Athlete
            ON Country.Country_Code = Athlete.Country_Code
        ) INNER JOIN Athlete_event
            ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2
        ) INNER JOIN Event
            ON Event.Event_ID = Athlete_event.Event_ID2
        )
WHERE Athlete.Athlete_ID = Event.Award_Gold
GROUP BY Athlete.NAME
HAVING MIN(Athlete.Age) = ( SELECT MIN(AGE) FROM Athlete )
于 2012-10-29T15:28:50.833 に答える
0

クエリでを使用するGROUP BYと、各アスリートの最低年齢が検索されます。

サブクエリを試してみてください。where句に追加します。次のようなもの:(テストされていません)

select Athlete.Age, Athlete.Name
from Athlete
AND Athlete.Age = (select MIN(Athlete.Age)
from (((Country INNER JOIN Athlete ON Country.Country_Code = Athlete.Country_Code)
INNER JOIN Athlete_event
ON Athlete.Athlete_ID = Athlete_event.Athlete_ID2)
INNER JOIN Event
ON Event.Event_ID = Athlete_event.Event_ID2)
Where Athlete.Athlete_ID = Event.Award_Gold);
于 2012-10-29T15:36:10.620 に答える