Pregunta:
Fecha: 28-09-2020 08:23:06
(En Español)
Hace rato que no me pasaba por aquí, pero solicito su ayuda tengo un problema muy concreto.
Tengo dos tablas, pero entre ellas necesito hacer 3 consultas con una condición.
Me explico
La tabla usuarios con todos los datos, otra que se llama referred y necesito mostrar las personas que tengan más de 25 referidos pero activos. Entonces de la tabla 1 cojo un id de usuario y lo busco en tabla referidos que me da otro id de usuario y ese referido volver a consultar la tabla de usuarios para saber si esta activo o no.
Lo he intentado de la siguiente manera, pero este me devuelve todos los usuarios
Esta no me cumple la condición y me repite son los nombres de quienes tienen afiliado
Espero no enredarme mucho Votos: 0 - Respuestas: 2 - Vistas: 8 Compartir en: Google Facebook Twitter LinkedIn Link
Consulta recursiva de uno a muchos a uno[Resuelta]
Hola,Hace rato que no me pasaba por aquí, pero solicito su ayuda tengo un problema muy concreto.
Tengo dos tablas, pero entre ellas necesito hacer 3 consultas con una condición.
Me explico
La tabla usuarios con todos los datos, otra que se llama referred y necesito mostrar las personas que tengan más de 25 referidos pero activos. Entonces de la tabla 1 cojo un id de usuario y lo busco en tabla referidos que me da otro id de usuario y ese referido volver a consultar la tabla de usuarios para saber si esta activo o no.
Lo he intentado de la siguiente manera, pero este me devuelve todos los usuarios
"SELECT * FROM users U WHERE 5 < (SELECT COUNT(*) FROM referred R INNER JOIN users UR ON R.id_affilete = UR.id WHERE active='1')"
Esta no me cumple la condición y me repite son los nombres de quienes tienen afiliado
SELECT * FROM users U INNER JOIN referred R ON U.id = R.id_affilete WHERE (SELECT COUNT(*) FROM users UR WHERE R.id_user = UR.id AND active=1) >= 1
Espero no enredarme mucho Votos: 0 - Respuestas: 2 - Vistas: 8 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 30-09-2020 13:27:00 Se me ocurre algo así, aunque no estoy seguro si puse bien los nombres de campos.
Estoy suponiendo que en la tabla referred existen dos campos id que apuntan a la tabla users:
- id_user: el id con el que se obtienen los datos propios del referrido.
- id_affilete: el id del usuario "padre" del referido.
Si los usé al revés tendrás que retocar la consulta! :)
SELECT users.*, ( SELECT COUNT(*) FROM referred JOIN users AS users_2 ON referred.id_user = users_2.id WHERE referred.id_affilete = users.id AND users_2.active = 1 ) AS count_ref FROM users HAVING count_ref > 25
Votos: 0 - Link respuesta -
Fecha: 01-10-2020 06:08:56 Hola,
Excelente me ha servido y agradezco tu ayuda.
Por problemas anteriores no puedo votar pero te agradezco.
Saludos
Equipo www.quecodigo.com Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión