生成查看多个表的查询

时间:2012-11-27 18:48:25

标签: sql task

我获得了一个数据库,结构和数据值都是不可更改的,并且已经提供了一个问题。

生成一个查询,列出访问网站代码101的所有假期的假日代码,假日描述,假期持续时间和网站描述。您的答案不能假设网站代码101将始终具有相同的网站描述。

我对如何解决这个问题很困惑。我尝试了多个连接,不同的点符号,并将问题用Google搜索到地狱和背部。有什么帮助吗?

表1 - Holiday_Details

Holiday_Code - Country_Visited - Holiday_Duration - Holiday_Desc - Rating_Code - Cost

表2 - Site_Of_Holiday

Site_Description - Site_Code

表3 - Site_Visited

Holiday_Code - Site_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; 

1 个答案:

答案 0 :(得分:1)

为了将来参考,如果您发布有关失败尝试的更多详细信息,您将获得更好的响应。那个,我的意思是代码。使用SO来解决你的家庭作业是不受欢迎的,但是,就像评论者说的那样,一旦你摧毁了你的大脑,我们愿意提供帮助。

你似乎真的很努力,所以我会给你一块骨头......

导航多个表的技巧是找到匹配列的“对”。在这种情况下,您希望在表Site_Of_Holiday(具有Site_Description)和Holiday_Details(具有其他所有内容)之间找到路径。

每对表之间匹配的列是:

  • Holiday_Code可在Site_Visited和Holiday_Details中找到
  • Site_Code可在Site_Of_Holiday和Site_Visited
  • 中找到

这允许您在包含输出中所需的所有列的表之间构建路径。在这种情况下,您将在这些匹配的列对之间使用INNER JOIN来执行此操作。

一旦你加入了表格,就把结果想象成一个巨大的表格,其中的列包括所有三个表格中的所有列(在连接期间以你的名字为前缀)。现在,您只需使用通常的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
祝你好运!

P.S。如果任何美国人得到类似的任务,这里是翻译; - )

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