1

同じイベントで引き分けたオリンピック選手について知っている情報を変更する任務を負っているオリンピック データベースを操作しようとしています。

「まず、クエリを拡張してイベントの詳細を表示します。イベント ID の代わりに、イベントの性別、距離、スタイルを表示します。この一環として、出力はイベントの性別、距離、スタイル、そして場所。

次に、2 人の競技者のそれぞれについて詳細を表示します。各競技者番号の代わりに、姓名と国名 (国コードではありません) を表示します。」


作業する必要がある 4 つのテーブルは次のとおりです。

次を含む競合他社: CompetitornNum、Givenname、Familyname。

次を含む結果: Eventid、CompetitorNum、Place。

以下を含むイベント: Eventid、Eventgender、距離、スタイル

次を含む国: 国名

Is my original query.

SELECT C1.EventID, C1.Place, C1.CompetitorNum, C2.CompetitorNum
FROM Results C1, Results C2
WHERE C1.Place = C2.Place
    and C1.EventID = C2.EventId
    and C1.CompetitorNum < C2.CompetitorNum
ORDER BY C1.EventID;

私の問題は、私が何をする必要があるかについての考えを持っていることですが、何かを試すたびに使用するように言われたプログラムがクラッシュし、ここからどこに行くべきか本当にわかりません.

SELECT Eventgender, Distance, Style, C1.Place, Givenname, Familyname, Countryname,     Givenname, Familyname, Countryname
FROM Results C1, Results C2
    natural join Competitors
    natural join Countries
    natural join Events
WHERE C1.Place = C2.Place
    and C1.EventId = C2.EventId
    and C1.CompetitorNum < C2.CompetitorNum
ORDER BY C1.EventID;

現在取得している CompetitorNum の代わりに、個人 1 と個人 2 の Givename、Familyname、および Countryname を選択しようとしています。

私の新しいクエリは最初の人を見つけますが、秒の人情報を取得するために変更する方法がわかりません。

どんな助けでも大歓迎です


解決策を見つけたようですが、タスクを達成するために最善の方法を使用しているかどうかはわかりません。それを行うより良い方法はありますか?

SELECT C5.Eventgender, C5.Distance, C5.Style, C1.Place, C3.Givenname, 
C3.Familyname, C6.Countryname, C4.Givenname, C4.Familyname, C7.Countryname
FROM Results C1
    join Results C2 on C1.Place = C2.Place and C1.EventId = C2.Eventid 
        and C1.Competitornum < C2.Competitornum
    join Competitors C3 on C3.Competitornum = C1.Competitornum
    join Competitors C4 on C4.Competitornum = C2.Competitornum
    join Events C5 on C5.Eventid = C1.Eventid
    join Countries C6 on C6.Countrycode = C3.Countrycode
    join Countries C7 on C7.Countrycode = C4.Countrycode
ORDER BY C1.EventId;
4

1 に答える 1

0
SELECT C5.Eventgender, C5.Distance, C5.Style, C1.Place, C3.Givenname, 
C3.Familyname, C6.Countryname, C4.Givenname, C4.Familyname, C7.Countryname
FROM Results C1
    INNER JOIN Results C2 on C1.Place = C2.Place and C1.EventId = C2.Eventid 
        and C1.Competitornum < C2.Competitornum
    INNER JOIN Competitors C3 on C3.Competitornum = C1.Competitornum
    INNER JOIN Competitors C4 on C4.Competitornum = C2.Competitornum
    INNER JOIN Events C5 on C5.Eventid = C1.Eventid
    INNER JOIN Countries C6 on C6.Countrycode = C3.Countrycode
    INNER JOIN Countries C7 on C7.Countrycode = C4.Countrycode
ORDER BY C1.EventId;
于 2012-09-14T03:05:20.933 に答える