大家好,我目前正在研究一个SQL示例项目,试图了解一般的SQL和内部外连接的基础知识。
这是我目前的数据库图表:
我目前遇到了两个不同的问题,我在编写时遇到了问题。
1. Given a puppy name show all the tricks it knows.
Include:
Dog id & name
Trick id & name
Date learned & skill level
2. Given a kennel show all the puppies that have been there to learn a trick.
Include:
Kennel id & name
Date learned & trick id
Dog id & dog name
我真的很难过这些,如果你能帮助我找到正确的答案,我会非常感激。任何帮助表示赞赏。感谢
答案 0 :(得分:0)
首先,你在Junction_Table和Tricks之间缺少一个foriegn键,但是因为你得到了其他的,我认为你可以解决这个问题。
其次,学习日期和技能等级属于联结表,而不是技巧表,因为它们是狗,狗窝和狗的组合的功能。诀窍而不仅仅是技巧。
解决了这个问题,第一个问题是给所有的狗和技巧是:
SELECT d.Dog_ID
,d.Dog_Name
,t.Trick_ID
,t.Trick_Name
,j.Skill_Level
,j.Date_Learned
FROM Dogs d
INNER JOIN
Junction_Table j ON d.Dog_ID=j.Dog_ID
INNER JOIN
Tricks t ON t.Trick_ID=j.Trick_ID
这些将为你提供所学到的所有技巧,至少有一个技巧。
如果您将Dogs和Junction_Table之间的INNER JOIN更改为LEFT JOIN,那么您将获得以上所有内容以及没有技巧的狗。
如果你把它更改为RIGHT JOIN,那么你会得到1 +技巧的狗和所有技巧,包括那些没有狗的技巧。
如果你将它改为FULL JOIN,你可以从Dogs and Tricks那里得到一些东西。
如果您将其更改为CROSS JOIN(并删除了ON语句),您将获得针对每个技巧的每条狗的一行。
第二个问题我将让你弄明白。
关于连接没有什么棘手的问题 - 从所有表格中的所需字段开始,然后通过连接将它们连接在一起。