2014-11-19 3 views
-1

나는 테이블을 가지고 msg
내 SQL 쿼리에 따르면 COUNT 모든 사용자에게 각각 msg을 선택해야합니다. Q1 ->Mysql 행을 계산

SELECT COUNT(*) 
FROM msg 
WHERE to = 2 
AND from IN(1,3,4) 
GROUP BY to 

Q2-

SELECT COUNT(*) 
FROM msg 
WHERE `from` = 2 
AND `to` IN (1,3,4) 
GROUP BY from 

어떻게 한 쿼리에서이 작업을 수행 할 수 있습니다>? (내 USER_ID = 2)

msg_id|from|to|msg| 
1  2 3 Hi 
2  2 3 Hi 
3  2 4 Hi 
4  3 2 Hi 
5  3 4 Hi 
6  4 2 Hi 
7  3 2 HiBye 
8  1 2 Hi 
9  2 4 Hi 
10  3 2 Hi 

예상 출력 :

user_id|sent_c|got_c| 
3  2  3 
4  2  1 
1  0  1 
+0

죄송 편집 질문 @Strawberry –

+0

예 @Strawberry 오타 –

답변

1

아마 피부에 여러 가지 방법이 특정 고양이가 있습니다. 여기

DROP TABLE IF EXISTS my_table; 

    CREATE TABLE my_table 
    (msg_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
    ,msg_from INT NOT NULL 
    ,msg_to INT NOT NULL 
    ,msg VARCHAR(12) NOT NULL 
); 

    INSERT INTO my_table VALUES 
    (1  ,2 ,3 ,'Hi'), 
    (2  ,2 ,3 ,'Hi'), 
    (3  ,2 ,4 ,'Hi'), 
    (4  ,3 ,2 ,'Hi'), 
    (5  ,3 ,4 ,'Hi'), 
    (6  ,4 ,2 ,'Hi'), 
    (7  ,3 ,2 ,'HiBye'), 
    (8  ,1 ,2 ,'Hi'), 
    (9  ,2 ,4 ,'Hi'), 
    (10  ,3 ,2 ,'Hi'); 

    SELECT * FROM my_table; 
    +--------+----------+--------+-------+ 
    | msg_id | msg_from | msg_to | msg | 
    +--------+----------+--------+-------+ 
    |  1 |  2 |  3 | Hi | 
    |  2 |  2 |  3 | Hi | 
    |  3 |  2 |  4 | Hi | 
    |  4 |  3 |  2 | Hi | 
    |  5 |  3 |  4 | Hi | 
    |  6 |  4 |  2 | Hi | 
    |  7 |  3 |  2 | HiBye | 
    |  8 |  1 |  2 | Hi | 
    |  9 |  2 |  4 | Hi | 
    |  10 |  3 |  2 | Hi | 
    +--------+----------+--------+-------+ 
    10 rows in set (0.00 sec) 

    SELECT user_id 
     , SUM(status = 'sent') s 
     , SUM(status = 'received') r 
    FROM 
     ( SELECT msg_id,msg_to user_id,'sent' status FROM my_table WHERE msg_from = 2 
      UNION 
      SELECT msg_id,msg_from,'received' FROM my_table WHERE msg_to = 2 
     ) x 
    WHERE user_id IN(1,3,4) 
    GROUP 
     BY user_id; 

+---------+------+------+ 
| user_id | s | r | 
+---------+------+------+ 
|  1 | 0 | 1 | 
|  3 | 2 | 3 | 
|  4 | 2 | 1 | 
+---------+------+------+   
+0

감사 @strawberry ... 하나 –