Question:
Date: 28-09-2020 08:23:06
(In Spanish)
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 Votes: 0 - Answers: 2 - Views: 8 Share on: Google Facebook Twitter LinkedIn Link
Consulta recursiva de uno a muchos a uno[Resolved]
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 Votes: 0 - Answers: 2 - Views: 8 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 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
Votes: 0 - Link answer -
Date: 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 Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In