Por un lado, tienes inconsistencia de datos en una tabla, lo que genera un resultado erróneo:
Código MySQL:
Ver original -> FROM torneos_partidos
; +------------+-----------+----------+-----------+-----------+----------------+---------+
| id_partido | id_torneo | id_ronda | user_id_1 | user_id_2 | partido_jugado | ganador |
+------------+-----------+----------+-----------+-----------+----------------+---------+
| 2 | 7 | 1 | 63 | 2 | NO | 0 | | 3 | 7 | 1 | 63 | 2 | NO | 0 | | 4 | 7 | 2 | 2 | 63 | NO | 0 | +------------+-----------+----------+-----------+-----------+----------------+---------+
Como puedes ver, si bien el partido es distinto entre los dos primeros, aparecen los mismos datos de roda, torneo, y los usuarios en el mismo orden, y eso no puede ser. Si son partidos distintos del mismo torneo, entonces el esquema de partidos no está bien definido.
Esto se produce al cruzar las dos:
Código MySQL:
Ver original -> FROM torneos_partidos TP
-> INNER JOIN torneos_rondas TR
ON TP.id_ronda
= TR.id_ronda
; +------------+-----------+----------+-----------+-----------+----------------+---------+----------+--------------------------+
| id_partido | id_torneo | id_ronda | user_id_1 | user_id_2 | partido_jugado | ganador | id_ronda | nombre_ronda |
+------------+-----------+----------+-----------+-----------+----------------+---------+----------+--------------------------+
| 2 | 7 | 1 | 63 | 2 | NO | 0 | 1 | Treintaidosavos de final
| | 3 | 7 | 1 | 63 | 2 | NO | 0 | 1 | Treintaidosavos de final
| | 4 | 7 | 2 | 2 | 63 | NO | 0 | 2 | Dieciseisavos de final
| +------------+-----------+----------+-----------+-----------+----------------+---------+----------+--------------------------+
Con esa inconsistencia, el resultado es:
Código MySQL:
Ver original -> TP.id_torneo,
-> TR.id_ronda,
-> TR.nombre_ronda,
-> -- TE.id_enfrentamiento -- ,
-> TP.user_id_1,
-> TI1.username User1,
-> TP.user_id_2,
-> TI2.username User2
-> FROM torneos_partidos TP
-> INNER JOIN torneos_rondas TR
ON TP.id_ronda
= TR.id_ronda
-> INNER JOIN torneos_inscripcion TI1
ON TP.user_id_1
= TI1.user_id
AND TP.id_torneo
= TI1.id_torneo
-> INNER JOIN torneos_inscripcion TI2
ON TP.user_id_2
= TI2.user_id
AND TP.id_torneo
= TI2.id_torneo
-> WHERE TP.id_torneo
= 7 AND TP.id_ronda
= 1; +-----------+----------+--------------------------+-----------+---------+-----------+--------+
| id_torneo | id_ronda | nombre_ronda | user_id_1 | User1 | user_id_2 | User2 |
+-----------+----------+--------------------------+-----------+---------+-----------+--------+
| 7 | 1 | Treintaidosavos de final | 63 | dankko2 | 2 | dankko |
| 7 | 1 | Treintaidosavos de final | 63 | dankko2 | 2 | dankko |
+-----------+----------+--------------------------+-----------+---------+-----------+--------+
Para descartar la inconsistencia, la consulta propuesta debería quedar así:
Código MySQL:
Ver original -> TP.id_torneo,
-> TR.id_ronda,
-> TR.nombre_ronda,
-> -- TE.id_enfrentamiento -- ,
-> TP.user_id_1,
-> TI1.username User1,
-> TP.user_id_2,
-> TI2.username User2
-> FROM torneos_partidos TP
-> INNER JOIN torneos_rondas TR
ON TP.id_ronda
= TR.id_ronda
-> INNER JOIN torneos_inscripcion TI1
ON TP.user_id_1
= TI1.user_id
AND TP.id_torneo
= TI1.id_torneo
-> INNER JOIN torneos_inscripcion TI2
ON TP.user_id_2
= TI2.user_id
AND TP.id_torneo
= TI2.id_torneo
-> WHERE TP.id_torneo
= 7 AND TP.id_ronda
= 1; +-----------+----------+--------------------------+-----------+---------+-----------+--------+
| id_torneo | id_ronda | nombre_ronda | user_id_1 | User1 | user_id_2 | User2 |
+-----------+----------+--------------------------+-----------+---------+-----------+--------+
| 7 | 1 | Treintaidosavos de final | 63 | dankko2 | 2 | dankko |
+-----------+----------+--------------------------+-----------+---------+-----------+--------+
En realidad el problema es que tienes mal los datos de una tabla y eso genera errores totales, además que los últimso dos join requerían una doble condición.
Por otro lado, si ambos partidos son reales, y corresponden a enfrentamientos Ida/Vuela, no pueden tener los mismos usuarios en el mismo orden. user_id_1 y user_id_2 deben invertirse entre ambos partidos.
Más allá de esto, a mi entender el modelo de datos en general está mal planteado, porque no logra cumplir con los requisitos que necesita una base aplicada a un sistema de torneos por rondas, ni tampoco está bien diseñado el subesquema referido a las inscripciones y los datos de los torneos.
En este último caso hay datos que deberían componer relaciones y no aparecen como tales.
Peor esto último es tema off-topic de PHP. Es asunto de diseño de bases de datos y habría que tratarlo en otro foro.