0

次のMySQLの状況で問題が発生しています。

私は次のテーブル構造を持っています:

+----+---------+-----------------+------------------+--------------------------------------+------------+
| 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フィールドが同じである数秒以内にすべてのストーリーをグループ化することです。

これが私が現在使用しているクエリですが、これはストーリーのすべてのインスタンスを返すわけではなく、それぞれが最初にtype発生するときだけusersです:

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
  • 29
  • 30
  • 31
4

1 に答える 1

2

おそらくUNIX_TIMESTAMPとFROM_UNIXTIMEを間違えましたか。それを交換するだけで、希望する結果セットがそこにあります。 ここをいじる

于 2012-11-20T15:10:22.097 に答える