【发布时间】:2012-09-26 15:22:39
【问题描述】:
我一直在努力了解如何使用单个查询从我的两个表中选择数据。如果有人可以提出比单个查询更好的方法,我全神贯注!以前我会使用两个查询来做到这一点,尽管我被引导相信单个查询会更好,因此我可以轻松地完成这项工作,因此尝试学习。
我的一张桌子与此类似,但已缩小。将此表称为“成员”:
ID | firstName | lastName | networkingID
还有另一个我称之为“网络”的表:
ID | websiteURL | facebookURL | twitterURL
我想要做的是在表member 上运行查询,例如:
SELECT * FROM `member` WHERE `ID`=2
从表member返回数据。
不过,我也希望从表 networking 返回相关值。表member 中的列networkingID 是networking 中行的ID。
我该怎么做呢?
到目前为止,我已经尝试使用通过 Google 找到的所有 JOIN,但无法使其正常工作。我最好的结果是LEFT JOIN,其中所有列都存在,但网络表的结果都是NULL。
【问题讨论】:
-
所以当您进行内部或外部联接时,您会从网络表中获取空值吗?您在每个表中谈论多少行?你确认过ID其实是两者的共同值吗?左连接将为您提供第一个表中的所有行和第二个表中存在匹配项的行,如果没有匹配项,则为第二个表提供空值。听起来 member.networkingId = networking.id 不是您认为的那样
-
成员表中networkid是否有外键约束?
-
只是一个非常愚蠢的原作者。不知何故,尽管记得添加了测试值,但数据库中缺少测试值;我认为这解释了 NULL 结果。你可以说这是漫长的几天!
-
可以理解。似乎大多数“回答者”并没有真正阅读过这个问题。关键是要记住不同类型的连接做什么以及结果集应该是什么。如果不是您所期望的,请查看数据以查看是否存在异常
-
我以前从未使用过任何形式的连接,并且在快速搜索后并不完全确定它的使用,所以只是假设它是一个编码错误。这肯定会教给我未来。