Ayuda con consulta SQL

M

Buenas.

Tengo una tabla de partidos de tenis

id_partido, ID_jugador1, ID_jugador2

Lo que quiero mostrar es

ID_partido, NOMBRE_jugador1, NOMBRE_jugador2

parece sencilla pero creo que me estoy complicando la vida...

edit: obviamente hay una tabla de jugadores (id_jugador, nombre...)

Lecherito

#1 Y donde se almacenan los nombres?

1 respuesta
lebroN

#1 para mostrar los nombres tienes que almacenarlos en algún lado hombre xD si tienes las id, no puedes mostrar los nombres, solo las id... Tendrías que meter los campos NOMBRE_jugador1, NOMBRE_jugador2 en la tabla para poder mostrarlos.

M

No se puede hacer un "replace" o algo de los resultados? O meter todos los campos pero al final solo mostrar los 3 que quiero?

1 respuesta
Li3cht

Necesitas almacenar los nombres en alguna variable, entonces te quedaría:

SELECT id_partido, nombre_jugador1, nombre_jugador 2
FROM comosellamelatabla;

Lecherito

#4 Hostias, me acabas de alegrar el día xDDDDD

Responde a #2 anda.

M

#2 Lo que quiero es que los campos de la consulta

id_partido, ID_jugador1, ID_jugador2, NOMBRE_jugador1, NOMBRE_jugador2

una vez sacados los nombres, quitar las columnas id_jugador para devolver ese resultado

2 respuestas
Lecherito

#7 entonces

select id_partido, nombre_jugador1, nombre_jugador2 from tabla;

Luego puedes añadir la condición que quieras.

catalon

#1 Supongo que lo que quieres es saber como hacer un JOIN??

http://dev.mysql.com/doc/refman/5.0/es/join.html

Li3cht

#7 Pues debes construir la tabla de manera que cada partidotiene una ID (algo así como un identificativo único, lo que se conoce como clave primaria/primary key).

Te quedaría algo así la tabla:

ID_PARTIDO | NOMBRE_JUGADOR1 | NOMBRE_JUGADOR2

1 | Rafael Nadal | Novak Djokovic

Si modificamos la consulta tal que así:

SELECT nombre_jugador1, nombre_jugador2
FROM tabla
WHERE id_partido = 1;

Solo aparecerá:

NOMBRE_JUGADOR1 | NOMBRE_JUGADOR2

Rafael Nadal | Novak Djokovic

1 respuesta
M

#10 Pero en la tabla partidos no guardo ningún nombre, solo guardo las ID de los jugadores

catalon

Creo que el problema es que no se ha explicado bien pero por lo que pone en #1 deduzco que tiene una tabla "jugador" y otra para hacer la relacion que es la tabla "partido" donde esta el id de los 2 jugadores del partido... Si eso es asi lo que necesita es un JOIN no una tabla nueva xDD

1 respuesta
M

#12

Tabla partidos: ID_partido, ID_jugador1, ID_jugador2
Tabla jugadores: ID_jugador1, NOMBRE...

Resultado que quiero

ID_partido, NOMBRE_jugador1, NOMBRE_jugador2


Sé que necesito un join, pero el resultado quiero que tenga solo esos 3 campos (no 5, que serían esos 3 + los dos nombres)

1 respuesta
shaba

No se si así funcionaria...

SELECT p.ID_partido, j1.NOMBRE, j2.NOMBRE
FROM partidos p 
LEFT JOIN jugadores j1 ON p.ID_jugador1 = j1.ID_jugador1
LEFT JOIN jugadores j2 ON p.ID_jugador2 = j2.ID_jugador1
1 1 respuesta
catalon

#13 Algo asi??

nada el de arriba esta mejor*

M

#14 Funciona :)

Usuarios habituales