2012-11-20 4 views
0

다음 MySQL 상황에 문제가 있습니다. 여러 개의 열로 구성된 MySQL GROUP 단독

나는 다음과 같은 테이블 구조를 가지고 :

+----+---------+-----------------+------------------+--------------------------------------+------------+ 
| id | author | recipient |  type  |     data    |  date | 
+----+---------+-----------------+------------------+--------------------------------------+------------+ 
| 2 | 1 |  0  | added_item  | { "item_id": "18" }     | 1352982623 | 
| 11 | 1 |  7  | started_follow |          | 1353030567 | 
| 9 | 1 |  0  | added_collection | { "collection_id": "18" }   | 1352994561 | 
| 12 | 7 |  1  | started_follow |          | 1353030952 | 
| 8 | 1 |  1  | started_follow |          | 1352987839 | 
| 14 | 1 |  0  | added_collection | { "collection_id": "19" }   | 1353056624 | 
| 15 | 7 |  0  | added_collection | { "collection_id": "20" }   | 1353056731 | 
| 16 | 1 |  7  | started_follow |          | 1353057009 | 
| 17 | 7 |  0  | added_item  | { "item_id": "21" }     | 1353057054 | 
| 24 | 2 |  0  | added_image  | { "image_id": "3", "item_id": "23" } | 1353419642 | 
| 23 | 2 |  0  | added_item  | { "item_id": "23" }     | 1353419159 | 
| 22 | 2 |  0  | added_collection | { "collection_id": "22" }   | 1353419146 | 
| 25 | 2 |  0  | added_image  | { "image_id": "4", "item_id": "23" } | 1353419644 | 
| 26 | 2 |  0  | added_image  | { "image_id": "5", "item_id": "23" } | 1353419646 | 
| 27 | 2 |  0  | added_collection | { "collection_id": "23" }   | 1353419953 | 
| 28 | 2 |  0  | added_item  | { "item_id": "24" }     | 1353419961 | 
| 29 | 2 |  0  | added_image  | { "image_id": "6", "item_id": "24" } | 1353419982 | 
| 30 | 2 |  0  | added_item  | { "item_id": "25" }     | 1353420424 | 
| 31 | 2 |  0  | added_image  | { "image_id": "7", "item_id": "25" } | 1353420435 | 
+----+---------+-----------------+------------------+--------------------------------------+------------+ 

내가 뭘하고 싶은 것은 그룹에게 authortype 필드가 동일 초, 다수 내의 모든 이야기이다. 여기

내가 지금 사용하고 쿼리하지만이 이야기의 모든 인스턴스를 반환하지 않습니다, 처음에만 각 typeusers 당 발생

SELECT `activity`.`id` AS `id` 
FROM `activity` 
INNER JOIN `user_privacy` ON `user_privacy`.`user_id` = `activity`.`author` 
WHERE (
`activity`.`author` =2 
OR `activity`.`recipient` =2 
) 
AND `user_privacy`.`include_stream` =1 
GROUP BY ROUND(UNIX_TIMESTAMP(DATE) /300) , `type` 
ORDER BY `activity`.`date` DESC 
LIMIT 300 

내가 SQLFiddle 데모를 설정 한 여기>http://sqlfiddle.com/#!2/2b5f4/1. 데이터가 위의 설명 및 질의 사용을 감안할 때

, 나는 다음과 같은 id의를 반환하고 싶습니다 :

  • 22
  • 23
  • 24
  • 27
  • 28
  • 31

답변

2

아마도 당신은 UNIX_TIMESTAMP 및 FROM_UNIXTIME 착각했다. 그냥 그것을 repalce하고 원하는 결과 집합이 있습니다. fiddle here

+0

고맙습니다. – BenM

관련 문제