2012-03-11 110 views
0

我对MySQL有点新,并试图通过我的手来学习它。不过,我遇到了一个查询如下: 我有2个表:表1包含用户创建的列表的详细信息。这些字段是listid,listname,creatorid,createdat,membercount; 表2存储每个列表成员的数据:字段是listid,userid;MySQL查询:查找相关属性

我需要处理的查询如下:找出满足以下两个条件的所有形式的用户对(u1,u2) i。 u1已创建至少一个列表,并且u2是该列表的成员。二, u2创建了至少一个列表,并且u1是该列表的成员。

注:表2 listid是listid表1

+0

@Luiggi我已经能够使用INNER JOIN从两个表中选择所需的属性,但是不知道在WHERE子句之后使用什么条件来获取所需的元组。 – ritz 2012-03-11 11:51:37

+0

你了解了嵌套查询吗?他们有这样的形式:'从表t1选择t1.a,t3.b,(从t2选择c,其中t2.a = t1.a)t3其中t3.c = t1.c'。 – 2012-03-11 11:56:33

+0

@LuiggiMendoza我的实际查询由2部分组成(参见编辑的问题)。对于第一部分Niko的解决方案是好的。但是,当我尝试使用嵌套查询两部分我陷入困境。 – ritz 2012-03-11 13:25:21

回答

2

这个怎么样外键?

SELECT l.creatorid AS u1, u.userid AS u2 
FROM table2 AS u 
INNER JOIN table1 AS l ON l.listid = u.listid 

从Table2返回每个用户和相应列表的创建者的ID。

+0

他需要列表创建者的ID和该列表中成员的用户的ID。 – 2012-03-11 11:53:40

+0

是的,这正是这个查询选择的内容。 – Niko 2012-03-11 11:54:42

+0

如果您将user1作为list1和user2的创建者作为list1的成员,而table2具有user1,user2和user3,该怎么办? – 2012-03-11 11:57:30