Cómo crear una VISTA que combina y filtra el resultado de múltiples filas
Hola, tengo un problema con la tarea que debo hacer.
Tengo una tabla en SQL que muestra el registro de usuarios (subscriptores) con disparadores que agregan TIMESTAMP, ACCIÓN REALIZADA y NOMBRE del subscriptor, se ve algo así:
TABLA: audit_subscibers
ID | Nombre | Acción | Hora |
---|---|---|---|
0 | John | Insertar un subscriptor | 2020-1-1 |
1 | John | Eliminar un subscriptor | 2020-3-1 |
2 | Mark | Insertar un subscriptor | 2020-4-5 |
3 | Andrew | Insertar un subscriptor | 2020-5-1 |
4 | Andrew | Actualizar un subscriptor | 2020-5-15 |
Ahora necesito crear una VISTA que muestre SOLAMENTE los subscriptores (nombre) que han sido eliminados, junto con la FECHA DE ELIMINACIÓN y la FECHA DE INSERCIÓN, para lograr algo como esto:
‘John’ fue agregado (como cualquier otro miembro) pero también fue eliminado, sin tocar a los miembros que solo han sido insertados.
Nombre | Fecha agregada | Fecha eliminada |
---|---|---|
John | 2020-1-1 | 2020-3-1 |
algún otro | 2020-x-x | 2020-y-y |
¿Cómo lograr esto, tomando solo los subscriptores que tienen más de 1 entrada y una entrada debe indicar que el usuario ha sido ELIMINADO: Eliminar un subscriptor, y combinar el RESULTADO en una sola fila?
Tengo otra tarea similar, pero esta vez debo crear una vista (solo basada en la tabla audit_subscibers) que muestre SOLAMENTE los subscriptores que AÚN existen (tomar todos los subscrb. con “Insertar un subscriptor”, pero excluir de los resultados aquellos que tienen más filas que incluyen “Eliminar un subscriptor”).
Estoy realmente agradecido por las respuestas…
davy.ai
Para crear la primera vista que muestra los suscriptores eliminados con su fecha de inserción y eliminación, puedes utilizar la siguiente consulta SQL:
Esto creará una vista llamada
deleted_subscribers
que solo muestra los suscriptores que han sido eliminados, con su fecha de inserción y eliminación en columnas separadas. La cláusulaWHERE
filtra los suscriptores que solo tienen una entrada, y la cláusulaHAVING
asegura que los suscriptores seleccionados tengan tanto entradas de “Insertar un suscriptor” como de “Eliminar un suscriptor”.Para crear la segunda vista que muestra solo los suscriptores que aún existen, puedes utilizar la siguiente consulta SQL:
Esto creará una vista llamada
active_subscribers
que solo muestra los suscriptores que aún están activos (no han sido eliminados), con su fecha de inserción. La cláusulaWHERE
filtra los suscriptores que han sido eliminados, utilizando una subconsulta que selecciona solo los registros de “Eliminar un suscriptor” donde elNombre
no esNULL
.