2011-12-20 4 views
0

내 테이블은 기본적으로 메시징 테이블입니다.MySQL에서 어떻게 값을 교환 할 수있는 두 개의 필드를 기반으로 행을 그룹화 할 수 있습니까?

ID : 정수, SENDER_ID : 정수, receiver_id : 정수, 메시지 : 텍스트

내가하고 싶은 것은 송신자와 수신자의 각 쌍에 대한 메시지의 행의 수를 얻을 수 있습니다 나는 다음과 같은 필드가 있습니다. 예

노니 :

  • 사용자 ID (10)는 사용자 (12)는 사용자 (3)는 사용자에게 4
  • 사용자 1 메시지를 보냄 10
  • 사용자 2 메시지를 전송 (12)
  • 사용자 3 메시지를 전송 4가 사용자 3에게 1 개의 메시지를 보냈습니다.

결과에 10과 12 사이에 교환 된 메시지 수를 표시하려면이 경우 5가되어야합니다.

마찬가지로 사용자 3과 4는 메시지 2 개를 교환했음을 보여 주어야합니다.

가능하면 한 번에 모두 쿼리합니다.

나는 이해할 수 있기를 바랍니다.

+0

는 방법이 있지만, UID (10) 및 (12)는 UID 12 5 메시지 것을 교환하고 경우 10도 5 메시지를 교환하는 것이, 당신이보고 싶어 (반대) – rabudde

답변

0
SELECT COUNT(*) FROM tablename WHERE sender_id IN (10,12) AND receiver_id IN (10,12) 

그러나이 메시지는 자신에게 보낸 모든 메시지를 계산합니다. 예를 들어 10-> 10입니다. 그래서 정확합니다 :

SELECT COUNT(*) FROM tablename 
WHERE (sender_id = 10 AND receiver_id = 12) 
OR (sender_id = 12 AND receiver_id = 10) 
관련 문제