2012-11-08 10 views
0

나는 문제가있어 노력하고 있지만 작동시키지 못합니다.MySQL - JOIN 및 GROUP BY

나는 다음 표를 가지고 :

메시지

|-------------|----------------| 
| senderID | recipientID | 
|-------------|----------------| 
| 4   | 3    | 
| 3   | 4    | 
| 3   | 423   | 
| 18   | 4    | 
| 391   | 4    | 
| 4   | 19    | 
| 3   | 4    | 
| 48   | 213   | 
| and so  | on ...   | 
|-------------|----------------| 

지금, 나는이 스레드의 목록을 할을 의미한다 : 내가 함께 메시지를 쓴 모든 사람의 목록입니다. 그래서 문제는 "senderID"또는 "recipientID"열은 내 userID (이 예제에서는 4)이며 중복 항목을 지우는 것입니다. 예를 들어 ID가 "3"인 다른 사용자와 2 개의 항목).

JOIN 및 GROUP BY와 함께 매우 이상한 것을 시도했지만 작동하지 않았습니다.

누군가 나를 도와주세요.

최저 인사, 첫 번째 절에서

SargTeX

답변

0
select distinct recipientid 
from messages 
where senderid = 4 
union 
select distinct senderid 
from messages 
where recipientid = 4 

, 별개의 각받는 사람이 한 번만 표시된다는 것을 의미합니다 사용; 두 번째 절에서도 마찬가지이며 합집합 인을 사용하면 두 절에 고유 한 값만 나타납니다.

0

감사합니다.

이 하나에 작동했지만 당신은 예뻐 보이는 :

SELECT IF (senderID = 4, recipientID, senderID) AS userID 
FROM `messages` 
WHERE senderID = 4 OR recipientID = 4 
GROUP BY userID