0

私はmysqlクエリに精通しているので、問題を解決するのを手伝ってくれる人がいるかどうかを尋ねたいと思います。私はこの複雑な(私にとって)SQLを持っています。ビューに変更したいです。

SELECT 
    username, 
    user_id,
    sum(result_points) AS count_points, 
    count(result_points) AS activity_done, 
    (
        (
            SELECT count(*) FROM `activity` WHERE periode_id = ''
        ) + 
        (
            SELECT
                IFNULL(sum(acs.result_points), 0) 
            FROM 
                user_activity ua 
            WHERE 
                periode_id = '' 
            AND ua.user_id = user_activity.user_id
            AND ua.result_points IS NOT NULL
        )
    ) AS total
    FROM 
        user_activity 
        LEFT JOIN users ON users.id = user_activity.user_id 
    WHERE 
        periode_id = '' 
    and user_id > 0 
    GROUP BY user_id 
    ORDER BY total DESC

「where」ステートメントを取り出して、表示するように変更できるようにする方法はありますか?

4

1 に答える 1

0

クエリが正しければ、次のようなビューを作成します

Create View data as
SELECT 
    username, 
    user_id,
    sum(result_points) AS count_points, 
    count(result_points) AS activity_done, 
    (
        (
            SELECT count(*) FROM `activity` WHERE periode_id = ''
        ) + 
        (
            SELECT
                IFNULL(sum(acs.result_points), 0) 
            FROM 
                user_activity ua 
            WHERE 
                periode_id = '' 
            AND ua.user_id = user_activity.user_id
            AND ua.result_points IS NOT NULL
        )
    ) AS total
    FROM 
        user_activity 
        LEFT JOIN users ON users.id = user_activity.user_id 
    WHERE 
        periode_id = '' 
    and user_id > 0 
    GROUP BY user_id 
    ORDER BY total DESC

ビューからwhere句を削除し、ビューにwhere句を追加します。

select * from data where user_id > 0 
于 2012-10-27T12:36:11.440 に答える