0

私はデータベースを与えられました。構造とデータ値はすべて変更できず、質問が提供されました。

サイト コード 101 にアクセスするすべての休日の休日コード、休日の説明、休日の期間、およびサイトの説明を一覧表示するクエリを作成します。サイト コード 101 が常に同じサイトの説明を持つとは限りません。

この問題をどうしようか迷っています。複数の結合、異なるドット表記を試し、質問をグーグルで調べて戻ってきました。何か助けはありますか?

表 1 - Holiday_Details

Holiday_Code - Country_Visited - Holiday_Duration - Holiday_Desc - Rating_Code - 費用

表 2 - Site_Of_Holiday

Site_Description - Site_Code

表 3 - Site_Visited

Holiday_Code - サイト_コード

コメントは、以前の試みを求めています。これは私の最初でした。

SELECT holiday_code, 
       holiday_desc, 
       holiday_duration site_of_holiday.Site_Name 
FROM   holiday_details 
       JOIN site_visited 
         ON holiday_code = site_visited.holiday_code 
       JOIN site_of_holiday 
         ON site_visited.site_code = site_of_holiday.site_code 
WHERE  site_of_holiday.site_code = 101; 
4

1 に答える 1

1

今後の参考のために、失敗した試行についてより多くの詳細を投稿すると、より良い応答が得られます。つまり、私はコードを意味します。宿題を解決するためにSOを使用することは嫌われていますが、コメンターが言ったように、あなたが頭を悩ませたら、私たちは喜んでお手伝いします。

本当に一生懸命頑張ったようですので、骨を投げます...

複数のテーブルをナビゲートする秘訣は、一致する列の「ペア」を見つけることです。この場合、テーブルSite_Of_Holiday(Site_Descriptionがあります)とHoliday_Details(他のすべてがあります)の間のパスを見つけたいと思います。

テーブルの各ペア間で一致する列は次のとおりです。

  • Holiday_Codeは、Site_VisitedとHoliday_Detailsの両方にあります
  • Site_Codeは、Site_Of_HolidayとSite_Visitedの両方にあります

これにより、出力に必要なすべての列を含むテーブル間にパスを作成できます。この場合、これらの一致する列ペア全体で内部結合を使用してこれを行います。

テーブルを結合したら、その結果を、3つのテーブルすべてのすべての列が列に含まれる巨大なテーブルのように考えてください(結合中にテーブルに「名前」を付けると接頭辞が付きます)。これで、通常のWHERE句を使用してSite_Codeでフィルタリングするだけです。

これが完全な例です-それがあなたのために働くかどうか私に知らせてください:

SELECT hd.Holiday_Code, hd.Holiday_Desc, hd.Holiday_Duration, soh.Site_Description
FROM Holiday_Details hd
INNER JOIN Site_Visited sv ON hd.Holiday_Code = sv.Holiday_Code
INNER JOIN Site_Of_Holiday soh ON sv.Site_Code = soh.Site_Code
WHERE sv.Site_Code = 101

幸運を!

PSアメリカ人が同様の任務を取得した場合、ここに翻訳があります;-)

SELECT vd.Vacation_Code, vd.Vacation_Desc, vd.Vacation_Duration, sov.Site_Description
FROM Vacation_Details vd
INNER JOIN Site_Visited sv ON vd.Vacation_Code = sv.Vacation_Code
INNER JOIN Site_Of_Vacation sov ON sv.Site_Code = sov.Site_Code
WHERE sv.Site_Code = 101
于 2012-11-27T19:10:55.943 に答える