Bueno, por empezar (ahora no tengo tiempo de verlo más profundamente, luego me pongo a analizar el resultado del query), al menos ya sabemos por qué se replicó la consulta:
¿Me puedes decir por qué pusiste el echo
dentro del while?
Si te fijas con cuidado, yo lo puse inmediatamente después de cargar la consula en la variable
y antes de enviarla a la base.
En definitiva, ese ha sido un fallo accidental, pero tenlo en cuenta: Las cosas no se ponen en cualquier parte...
Respecto al resultado de la consulta, lo que puedo ver es que te devuelve resultados indebidos o aparentemente duplicado, porque estás filtrando por id_ronda solamente, pero no lo estás haciendo por id_torneo, ni relacionando los torneos, con los que se retornan todas las rondas Nº 7, sin importar a qué torneo pertenecen... y eso no creo que esté bien.
Yo probaría esto:
Código MySQL:
Ver originalFROM `torneos_enfrentamientos` TE
INNER JOIN `torneos_inscripcion` TI
ON TI.
`user_id` = TE.
`user_id_1` INNER JOIN `torneos_rondas` TR
ON TR.
`id_ronda` = TE.
`id_ronda` AND TR.
`id_torneo` = TE.
`id_torneo` WHERE TE.
`id_torneo` = '7';