我获得了一个数据库,结构和数据值都是不可更改的,并且已经提供了一个问题。
生成一个查询,列出访问网站代码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;
答案 0 :(得分:1)
为了将来参考,如果您发布有关失败尝试的更多详细信息,您将获得更好的响应。那个,我的意思是代码。使用SO来解决你的家庭作业是不受欢迎的,但是,就像评论者说的那样,一旦你摧毁了你的大脑,我们愿意提供帮助。
你似乎真的很努力,所以我会给你一块骨头......
导航多个表的技巧是找到匹配列的“对”。在这种情况下,您希望在表Site_Of_Holiday(具有Site_Description)和Holiday_Details(具有其他所有内容)之间找到路径。
每对表之间匹配的列是:
这允许您在包含输出中所需的所有列的表之间构建路径。在这种情况下,您将在这些匹配的列对之间使用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