2017-09-25 1 views
0

내 웹 사이트에는 회원이 있습니다. 이 멤버는 projets를 만들 수 있으며 다른 회원은 모든 프로젝트를 수행 할 수 있습니다 id/name배열로 중복 된 Mysql 요청

나는 "프로젝트"로 명명 된 두 번째 MySQL의 테이블이 있습니다

나는 다음과 같은 열이 "멤버"라는 이름의 첫번째 MySQL의 테이블이 있습니다 : id/idmember/idproject

내 목표는 구성원들의 승무원을 보여주는 것입니다 : id/founder

나는라는 이름의 두 번째 MySQL의 테이블에 "따라"이 오 :

목록 모든 구성원 :

  • 같은 (들) 프로젝트 (들)에 따라 내가 설립 한 프로젝트에 따라

  • 되세요 내가 따라야 할 프로젝트를 만들었습니다.

하지만 중복되지 않은 결과를 보여주기 위해 에드. 예를 들어, 내가 프로젝트를 수행하고 내가 따르는 프로젝트의 창립자라면, 한 번만 나를 볼 필요가 있습니다.

나는 배열 작업을 시작했으며, 좋은 해결책 인 것처럼 보이지만 실제로 그 방법을 생각할 수는 없다. 감사합니다. .

+0

당신은 MySQL을의''DISTINCT'을 사용할 수 있어야합니다 중복을 제거하십시오. 우리가 볼 수 있도록 여기에 SQL 코드를 게시하십시오. – kmoser

답변

0

당신의 members.id을 가정 1337하고 Projects.founder 외국은에 다음 DISTINCT을 다음 중복있는 테이블을 만들기 위해 UNION을 사용할 수 있습니다 members.id에 키가된다 :

SELECT DISTINCT id, name 
FROM (
    SELECT members.id, members.name 
    FROM members, Follow f1, Follow f2 
    WHERE members.id = f1.idmember 
    AND f1.idproject = f2.idproject 
    AND f2.idmember = 1337 
    UNION 
    SELECT members.id, members.name 
    FROM members, Follow, Project 
    WHERE members.id = Follow.idmember 
    AND Project.id = Follow.idproject 
    AND Project.founder = 1337 
    UNION 
    SELECT members.id, members.name 
    FROM members, Follow, Project 
    WHERE Follow.idmember = 1337 
    AND Project.id = Follow.idproject 
    AND Project.founder = members.id 
) 
+0

감사! 그것은 매우 흥미 롭습니다,하지만 어쩌면 조금 복잡해집니다 ... 전 완전히 이해하지 못합니다 ... :) f1과 f2는 별칭입니까? – Damien

+0

수정. SELECT 문에서 테이블을 두 번 필요하기 때문에 별칭을 지정해야합니다. – wogsland