Facebook アプリケーションのユーザー アクションをログに記録するためのテーブルがあります。特定のアクション ID について、9 分以上経過していない最新の行を取得したいと考えています。この表には、他の統計情報の列が多数あるため、問題を表す 2 つの行のみを示します。
timestamp facebookID producerID eventID actionID numOfTickets
2012-05-28 13:16:38 100003286974944 9 1741 cpf 2
2012-05-28 13:16:13 100003286974944 9 1741 cpf 4
私がやりたいのは、最新の行を取得することですactionID = 'cpf'
。
私が試したことは次のとおりです。
SELECT CONCAT_WS(' ', y.firstName, y.lastName) as fullName, x.facebookID, x.numOfTickets, MAX(x.timestamp)
FROM E4S_ANALYTICS.e4s_analytic_data x INNER JOIN E4S_FB.e4s_user_details y ON x.facebookID = y.facebookID
WHERE (x.actionID = 'CPF' AND x.numOfTickets > 0 AND x.producerID = 9 AND TIMEDIFF(NOW() , x.timestamp) < '00:09:00'
AND x.facebookID IN (SELECT facebookID FROM E4S_FB.e4s_session_data WHERE
TIMEDIFF(NOW() , sessionStart) < '00:09:00' ))
クエリの結果は次のとおりです。
facebookID numOfTickets MAX(x.timestamp)
100003286974944 4 2012-05-28 13:16:38
返されたタイムスタンプは正しいですが、numOfTickets
2 ではなく 4 です。
注、内部クエリ:
SELECT facebookID FROM E4S_FB.e4s_session_data
WHERE TIMEDIFF(NOW() , sessionStart) < '00:09:00' ))
誰がまだアプリケーションにログインしているかを確認するために使用されます。