1

現在、タイムスタンプに基づいてユーザーの訪問数を取得していますが、合計訪問数も含めたいと思います。これは、1つのMySQLステートメントで実行できますか?タイムスタンプに基づいて1つのカウントのみを返す現在のクエリは次のとおりです。

$sql = "SELECT count(*) as visitors_count FROM profile_visits
        LEFT JOIN users on users.user_id=profile_visits.user_id
        LEFT JOIN profile_info ON profile_info.user_id = users.user_id
        WHERE profile_user_id=5
        AND users.restricted <> 1
        AND profile_visits.visit_time > '2012-07-30 18:53:16'";

タイムスタンプを除いた訪問の総数を返すこともできますか?

4

1 に答える 1

2

式を使用して、以下のCASE範囲内で条件付きで集計できますCOUNT()

SELECT    COUNT(*) AS total_count,
          COUNT(CASE WHEN profile_visits.visit_time > '2012-07-30 18:53:16' THEN 1 END) AS visitors_count
FROM      profile_visits
LEFT JOIN users ON users.user_id=profile_visits.user_id
LEFT JOIN profile_info ON profile_info.user_id = users.user_id
WHERE     profile_user_id=5 AND 
          users.restricted <> 1

句から> '2012-07-30 18:53:16'式に移動しただけで、その条件を満たしている場合にのみ行がカウントされます。そしてもちろん、タイムスタンプに関係なくすべての行をカウントします。WHERECASECOUNT()COUNT(*)

于 2012-08-01T12:23:37.807 に答える