问:当以其中的一个表有两个外键指向另一个表的主键时,我们怎样从两个表中检索数据?例如,表A有两个列,Parent_ID和Child_ID。表B有两个列,ID和名字。我们怎样检索数据并让这些数据按照Parent_ID、Parent_Name、Child_ID和Child_Name显示。
答:只要将这个表连结两次。完成之后,你就必须使用表别名:
注意在这一查询中TableB会出现两次。这就是说我们在它每次出现时都必须使用别名,而且要用SELECT语句、用合适的别名限定这些列。由于TableB两个实例中的列有相同的名称,即这一名称是共有的但不是必需的——所以我们要用SELECT语句对表别名复值。
答:只要将这个表连结两次。完成之后,你就必须使用表别名:
SELECT a.Parent_ID,bp.Name AS Parent_Name,a.Child_ID,bc.Name AS Child_Name
FROM TableA AS a INNER JOIN TableB AS bp ON bp.ID = a.Parent_ID INNER JOIN TableB AS bc ON bc.ID = a.Child_ID
注意在这一查询中TableB会出现两次。这就是说我们在它每次出现时都必须使用别名,而且要用SELECT语句、用合适的别名限定这些列。由于TableB两个实例中的列有相同的名称,即这一名称是共有的但不是必需的——所以我们要用SELECT语句对表别名复值。
本文介绍了一种特殊的数据检索方法,即在一个表中存在两个外键指向另一个表的主键时,如何通过SQL语句有效地从这两个表中检索数据,并按特定顺序显示。通过将表连接两次并使用别名的方法,可以实现Parent_ID、Parent_Name、Child_ID和Child_Name等字段的正确展示。
2万+

被折叠的 条评论
为什么被折叠?



