es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada combinando las 3 tablas, podemos usar la sentencia UNION ALL para combinar los datos y luego usar la sentencia GROUP BY para agrupar los datos por staff_id.

    Aquí hay un ejemplo de consulta que se puede usar:

    SELECT 
      staff_id, 
      SUM(total_reports) AS total_reports, 
      SUM(total_bans) AS total_bans, 
      SUM(total_warnings) AS total_warnings 
    FROM (
      SELECT ban_user_id AS staff_id, 0 AS total_reports, COUNT(*) AS total_bans, 0 AS total_warnings 
      FROM Ban_Table GROUP BY ban_user_id
    
      UNION ALL 
    
      SELECT last_modified_user_id AS staff_id, COUNT(*) AS total_reports, 0 AS total_bans, 0 AS total_warnings 
      FROM Reports_Table GROUP BY last_modified_user_id
    
      UNION ALL
    
      SELECT warning_user_id AS staff_id, 0 AS total_reports, 0 AS total_bans, COUNT(*) AS total_warnings 
      FROM Warning_Table GROUP BY warning_user_id
    ) AS combined_data 
    GROUP BY staff_id;
    

    En esta consulta, primero seleccionamos los datos de cada tabla por separado y asignamos un valor de 0 a las columnas que no son relevantes para esa tabla. Luego, utilizamos la sentencia UNION ALL para combinar los datos verticalmente. Después de eso, seleccionamos de los datos combinados y usamos la sentencia GROUP BY para agrupar los datos por staff_id y realizar las agregaciones (SUM) en las columnas relevantes.

Comments are closed.