2012-11-27 73 views
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 - 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

我闻到功课。 – JYelton

+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 
+0

非常感谢。我在这里坐了大约2个小时,试图找出如何解决这个问题。使用谷歌和YouTube提供的帮助,但没有完全相关的信息,我的企图,甚至相关。我会很高兴与第一部分,但这个例子可能会帮助我更多。我将发布结果:D –