2011-03-16 59 views
0

我有三个表:SQL查询来获取对连杆

  • 一个按项目名称(项目)
  • 一个由人的姓名索引(参与者)
  • 一个链接索引成员到项目(每个项目的每个成员一行)(PROJPART)。

    人们可能并经常会成为多个项目的成员。我需要一个SQL查询(使用MySQL),它将列出所有已链接的项目对,因为它们共享至少一个成员。这在SQL中可能吗?如果是这样,你能建议查询的形式吗?

+0

您是否正在寻找只是对????或甚至更多...说Proj A,Proj B,Proj C,Proj D都是相关联的,或者A + B,A + C,A + D,B + C,B + D,C + D? – DRapp 2011-03-16 12:52:23

回答

0
select c.project_name, d.project_name 
from projpart a 
inner join projpart b 
    on a.memberid = b.memberid 
    and a.projectid < b.projectid 
inner join project c on c.projectid = a.projectid 
inner join project d on d.projectid = b.projectid 
0

内选择将返回其成员超过1个项目。这些项目将被连接。

SELECT member_id,project FROM PROJECT, PROJPART WHERE 
     PROJPART.project_id= PROJECT.project_id AND 
     PROJPART.MEMBER IN 
     (SELECT MEMBER, SUM(1) FROM PROJPART 
     GROUP BY members 
     HAVING SUM(1)>1) 
     ORDER BY member_id 

我认为这是不完全一样的,你想要什么,但它可以帮助你