0

我一直在努力思考如何使用单个查询从我的两个表中选择数据。如果有人可以提出比单个查询更好的方法,我全神贯注!以前我会使用两个查询来做到这一点,尽管我被引导相信单个查询会更好,因此我可以轻松地完成工作,因此尝试学习。

我的一张桌子与此类似,以缩小的形式出现。将此表称为“成员”:

ID  |  firstName  |   lastName  | networkingID

另一个我称之为“网络”的表:

ID  |  websiteURL | facebookURL | twitterURL


我想要做的是在表上运行一个查询,member例如:

SELECT * FROM `member` WHERE `ID`=2

从表中返回数据member

但是我也希望从表中返回相关值networkingnetworkingID表中的列memberID中行的networking

我该怎么做呢?

到目前为止,我已经尝试使用我能够通过 Google 找到的所有 JOIN,但我无法使其工作。我最好的结果是LEFT JOIN所有列都存在但网络表的结果都是NULL.

4

5 回答 5

3
SELECT * FROM member
LEFT JOIN networking
ON member.networkingID=networking.ID
WHERE member.ID=2
于 2012-09-26T15:25:14.523 回答
0

简单的连接,在一个共同的 id 之间。内连接将确保网络表中有记录,否则不会显示该成员。LEFT JOIN如果您想要所有member行,无论它们是否在network表中加入任何内容,您都可以将其替换为

 SELECT * FROM member m 
      INNER JOIN networking n 
 ON (m.networkingID = n.id) 
 WHERE m.id = 2;
于 2012-09-26T15:25:16.600 回答
0
select
   *
from
   member as m
   left outer join
      networking as n
   on
      m.networkingID=n.ID
于 2012-09-26T15:25:26.630 回答
0

一个 JOIN 应该工作。

SELECT * FROM member, networking WHERE member.ID=2 AND member.networkingID=networking.ID

如果 member.ID=2 没有网络数据,这将返回一个空结果。如果你想在这种情况下得到一个结果,你可以尝试 LEFT JOIN。

SELECT * FROM member LEFT JOIN networking ON member.networkingID=networking.ID WHERE member.ID=2
于 2012-09-26T15:27:57.503 回答
0
select * from member a, networking b 
where a.networkingID=b.ID and a.ID = 2
于 2012-09-26T15:29:00.073 回答