Cómo obtener el resultado siguiente al combinar datos de 3 tablas diferentes.
Así que tengo 3 tablas en mi base de datos, donde las 3 tablas contienen una columna con datos similares, pero el nombre de esa columna es diferente en las 3 tablas, a continuación se muestra un ejemplo.
Tabla Ban
user_id | ban_user_id | ban_date | reason | end_date |
---|---|---|---|---|
1300 | 1 | xyz | xyz | xyz |
32 | 1 | xyz | xyz | xyz |
43 | 2 | xyz | xyz | xyz |
Tabla Reports
user_id | last_modified_user_id | report_date | reason | end_date |
---|---|---|---|---|
1300 | 1 | xyz | xyz | xyz |
32 | 2 | xyz | xyz | xyz |
43 | 2 | xyz | xyz | xyz |
Tabla Warning
user_id | warning_user_id | warning_date | reason | end_date |
---|---|---|---|---|
1300 | 1 | xyz | xyz | xyz |
32 | 2 | xyz | xyz | xyz |
43 | 3 | xyz | xyz | xyz |
Ahora quiero obtener los datos combinando estas 3 tablas, donde ban_user_id, last_modified_user_id y warning_user_id contienen los datos del miembro del personal que realizó las acciones, así que quiero agrupar los datos por el ID del personal.
El resultado que estoy buscando es el siguiente:
staff_id | total_reports | total_bans | total_warnings |
---|---|---|---|
1 | 1 | 2 | 1 |
2 | 2 | 1 | 1 |
3 | 0 | 0 | 1 |
donde cuenta los datos de cada tabla agrupando la segunda columna, ban_user_id, last_modified_user_id, warning_user_id respectivamente. Y luego combina los datos.
He intentado cosas con UNION ALL y otras cosas, pero no funcionó.
Gracias anticipadas por tu ayuda.
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:
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.