elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  [Pregunta]: ¿Cómo puedo hacer esta consulta?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Cómo puedo hacer esta consulta?  (Leído 387 veces)
Leguim


Desconectado Desconectado

Mensajes: 651



Ver Perfil
[Pregunta]: ¿Cómo puedo hacer esta consulta?
« en: 21 Abril 2021, 19:58 pm »

Hola,

tengo una tabla 'attempts' donde guardará todas las tentativas erróneas de login de los usuarios,  como máximo pueden llegar a tener 6 tentativas.

Ejemplo:
Código
  1. * ID_USER IP
  2. 1. 37  ::1
  3. 2. 37  ::1
  4. 3. 37  ::1
  5. 4. 37  ::1
  6. 5. 37  ::1
  7. 6. 37  ::1
  8. 7. 79  225.341.63
  9.  

Básicamente tenemos 6 tentativas del usuario 37 y una tentativa en la cuenta del usuario 79 (id_user de attempt ya está relacionado con el id_user de users)

Hecho eso ahora necesito que por medio de una consulta eliminar todas las tentativas a uno de estos usuarios si llega a tener 6.

Código
  1. "DELETE FROM attempts WHERE [Aquellos usuarios que tengan = 6 tentativas]"
  2.  


En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.743


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #1 en: 21 Abril 2021, 21:18 pm »

Puedes hacerlo con una subconsulta. Esto me funciona en PostgreSQL:

Código
  1. DELETE FROM attempts
  2. WHERE id_user IN
  3. (SELECT id_user
  4. FROM attempts
  5. GROUP BY 1
  6. HAVING COUNT(*) >= 6);


En línea

Leguim


Desconectado Desconectado

Mensajes: 651



Ver Perfil
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #2 en: 22 Abril 2021, 00:26 am »

Hola!

Así como está me funciona, pero para que funcione tal cual quiero necesito hacerlo así.. pero no pasa nada:

Código
  1. DELETE FROM attempts A INNER JOIN users U ON A.id_user = U.id_user WHERE A.id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user GROUP BY A.id_user HAVING COUNT(*) >= 6) AND U.login_banned = 0
  2.  
« Última modificación: 22 Abril 2021, 00:30 am por Leguim » En línea

[D]aniel


Conectado Conectado

Mensajes: 500



Ver Perfil
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #3 en: 22 Abril 2021, 02:10 am »

Hola, prueba así:


Código
  1. DELETE FROM attempts A INNER JOIN users U ON A.id_user = U.id_user; WHERE A.id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user GROUP BY A.id_user HAVING COUNT(*) >= 6) AND U.login_banned = 0


Saludos
En línea

Leguim


Desconectado Desconectado

Mensajes: 651



Ver Perfil
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #4 en: 22 Abril 2021, 02:30 am »

Hola,

Me sigue sin funcionar, ya estuve revisando varias veces la consulta pero no encuentro fallos.
En línea

[D]aniel


Conectado Conectado

Mensajes: 500



Ver Perfil
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #5 en: 22 Abril 2021, 03:43 am »

Prueba con esta otra:

Código
  1. DELETE FROM attempts A; INNER JOIN users U ON A.id_user = U.id_user; WHERE A.id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user GROUP BY A.id_user HAVING COUNT(*) >= 6) AND U.login_banned = 0;


Saludos
« Última modificación: 22 Abril 2021, 03:46 am por [D]aniel » En línea

Leguim


Desconectado Desconectado

Mensajes: 651



Ver Perfil
Re: [Pregunta]: ¿Cómo puedo hacer esta consulta?
« Respuesta #6 en: 22 Abril 2021, 05:24 am »

Nop, sigue igual sin hacer nada

Si ya pongo alias e Inner JOIN ya no funciona pero si lo dejo tal cual si pero estoy en la nada porque necesito hacerlo así...


Solucionado:
Ya logré hacer que funcione,

Código
  1. "DELETE FROM attempts WHERE id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user WHERE U.login_banned = 0 GROUP BY A.id_user HAVING COUNT(*) >= 6)"
  2.  
« Última modificación: 22 Abril 2021, 18:39 pm por Leguim » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines