Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

No me muestra los valores correctos ...

Estas en el tema de No me muestra los valores correctos ... en el foro de Bases de Datos General en Foros del Web. Buenas, a ver no es dificil pero no soy capaz de dar con el punto de esta relacion. El ejemplo seria dos tablas : Tabla ...
  #1 (permalink)  
Antiguo 25/07/2011, 05:50
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
No me muestra los valores correctos ...

Buenas, a ver no es dificil pero no soy capaz de dar con el punto de esta relacion.

El ejemplo seria dos tablas :

Tabla partidas :
- id
- Nombre

Tabla partidas_movimiento :
- id
- partidaID -> Es el id de la tabla partida
- Turno

Yo pongo algo similar a esto ( he probado varias cosas y esto es lo mas proximo que llegue ) .

Código PHP:

SELECT partidas
.idpartidas_movimiento.turno FROM `partidasinner join partidas_movimiento on partidas_movimiento.partidaid=partidas.id
group by partidas_movimiento
.partidaid  order by partidas_movimiento.id desc 
Y no me muestra lo que yo necesitaria, la idea es algo asi, relleno las tablas.

Partida.id = 1
partida.id = 2
partida.id = 3
partida.id = 4

partidas_movimiento.id=1
partidas_movimiento.partidaid=1
partidas_movimiento .turno="b"

partidas_movimiento.id=2
partidas_movimiento.partidaid=1
partidas_movimiento .turno="n"

partidas_movimiento.id=3
partidas_movimiento.partidaid=1
partidas_movimiento .turno="b"

partidas_movimiento.id=4
partidas_movimiento.partidaid=2
partidas_movimiento .turno="b"

partidas_movimiento.id=5
partidas_movimiento.partidaid=2
partidas_movimiento .turno="n"

partidas_movimiento.id=6
partidas_movimiento.partidaid=3
partidas_movimiento .turno="b"

partidas_movimiento.id=7
partidas_movimiento.partidaid=4
partidas_movimiento .turno="b"

partidas_movimiento.id=8
partidas_movimiento.partidaid=4
partidas_movimiento .turno="n"



Yo necesito que en un select me saque los valores de quien es su turno por partida, que saliera algo asi :

partidaId = 1
turno = b

PartidaId = 2
turno = n

PartidaId = 3
turno = b

PartidaId = 4
turno = n

Estoy ahora probando en hacer un select y despues en el where otro select o similar, por que creo qeu va por ahi el tema pero nada ... si pongo limit 1 no "se" poner que sea el limite solo por partidaId ... y similar.

Me podeis ayudar por favor, espero haberme explicado

Un saludo y gracias anticipadas.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #2 (permalink)  
Antiguo 25/07/2011, 06:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No me muestra los valores correctos ...

No es un problema dramático, es que la consulta tal y como la planteas primero agrupa, y recién entonces ordena, mientras que lo que tu necesitas es que haga al revés. Pero como el GROUP BY precede siempre al ORDER BY, no puedes hacerlo en una consulta simple. AL agrupar primero, MySQL toma el primer registro que cumple con la condición y descarta el resto, por lo que, como el ID de la tabla muestra el orden de entrada, siempre quedará el primero, y jamás los siguientes, que son los que tu buscas.
Tienes que usar subconsultas, de modo que la consulta inicial ordene como necesitas, generando una tabla derivada, y luego una consulta mayor agrupe por el ID:
Código MySQL:
Ver original
  1.     P.id,
  2.     PM.turno
  3.     (SELECT
  4.         P.id,
  5.         PM.turno,
  6.         PM.partidaid
  7.     FROM
  8.         partidas p
  9.         INNER JOIN
  10.         partidas_movimiento PM ON P.id = PM.partidaid
  11.     ORDER BY PM.id DESC) T1
  12. GROUP  BY partidaid;

Este tipo de problemas son muy comunes para los principiantes en SQL y siempre hay alguien que los ha preguntado antes; te conviene buscarlos usando el buscador del foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/07/2011, 07:42
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: No me muestra los valores correctos ...

Muchas gracias, que grande el dicho "solo se que no se nada".

Tengo que mirarme bien esta parte, un saludo y gracias de nuevo.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com

Etiquetas: muestra, tabla, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:37.