Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2012, 06:42
liranan
Invitado
 
Mensajes: n/a
Puntos:
MYSQL y PHP - Consulta y muestra de varias tablas

Buenos días.

El problema que tengo se puede resumir de la siguiente manera:

En una página de juegos donde se puede apostar contra otros usuarios debo mostrar una lista con todas las partidas abiertas (es decir, que no se han finalizado) y quiénes están apuntados a esa partida.

Ahora, mis tablas:

PARTIDAS
-codigoPartida
-partidaTerminada (es = '0' si no se ha finalizado la partida)
-apuesta
-fecha
-etc.

PUNTUACIONES
-idPartida (se enlaza con 'codigoPartida')
-idUsuario (se enlaza con 'nickname')
-idJuego
-puntuacion
-etc.

USUARIOS
-nickname (se enlaza con 'idUsuario')
-avatar
-etc.

Como podéis ver, lo tengo dividido en tres tablas. Hay más, y cada una tiene más campos, pero solo voy a comentaros lo que considero relevante para la consulta.

La tabla PARTIDAS crea un registro nuevo cada vez que un usuario crea una nueva partida, a la vez, se creará un nuevo registro en la tabla PUNTUACIONES cada vez que un usuario se una a una partida anteriormente creada.

Todo funciona perfectamente, excepto a la hora de mostrarlo por pantalla, que es donde me pierdo irremediablemente.

La idea es que la consulta (y la tabla en php) muestre:

- Una sola fila (<tr>) por cada codigoPartida diferente de la tabla PARTIDAS
- Dentro de esa fila, una celda (<td>) rellena con los avatares y nombres de cada uno de los usuarios que se hayan unido a dicha partida.

Por lo tanto, lo que estoy intentando es hacer una triple consulta, más o menos así:

Código SQL:
Ver original
  1. SELECT * FROM ((partidas p INNER JOIN puntuaciones pu ON p.codigoPartida = pu.idPartida) INNER JOIN usuarios u ON pu.idUsuario = u.nickname) WHERE p.partidaTerminada ='0' ORDER BY p.codigoPartida DESC

El código funciona, me devuelve todos los usuarios que cumplen las condiciones, pero al mostrarlo por pantalla no logro que todos los que tienen un mismo "codigoPartida" aparezcan en la misma fila.
Suena estúpido y a lo mejor lo es, pero yo ya no sé cómo intentarlo.

Gracias de antemano!
Gonzalo.