diff --git a/app/queries/admins/user_statistic_query.rb b/app/queries/admins/user_statistic_query.rb index 866ec4d0b..d1811e5ab 100644 --- a/app/queries/admins/user_statistic_query.rb +++ b/app/queries/admins/user_statistic_query.rb @@ -83,7 +83,7 @@ class Admins::UserStatisticQuery < ApplicationQuery users.joins("LEFT JOIN myshixuns ON myshixuns.user_id = users.id AND myshixuns.status = 1 AND "\ "myshixuns.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(:myshixuns).where(myshixuns: { status: 1 }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id AND myshixuns.status = 1') end users.select("#{base_query_column}, COUNT(*) finish_shixun_count") @@ -94,7 +94,8 @@ class Admins::UserStatisticQuery < ApplicationQuery .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id "\ "AND games.status IN (0,1,2) AND games.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(myshixuns: :games).where(games: { status: [0, 1, 2] }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id') + .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id AND games.status IN (0,1,2)") end users.select("#{base_query_column}, COUNT(*) study_challenge_count") @@ -105,7 +106,8 @@ class Admins::UserStatisticQuery < ApplicationQuery .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id "\ "AND games.status = 2 AND games.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(myshixuns: :games).where(games: { status: 2 }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id') + .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id AND games.status = 2") end users.select("#{base_query_column}, COUNT(*) finish_challenge_count")