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

Consulta compleja

Estas en el tema de Consulta compleja en el foro de Mysql en Foros del Web. Hola Gente! A ver como podemos hacer esto: Tengo una tabla donde hay equipos de futbol. En otra tabla inserto datos de jugadores, entre ellos ...
  #1 (permalink)  
Antiguo 04/08/2009, 07:41
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
Consulta compleja

Hola Gente!
A ver como podemos hacer esto:

Tengo una tabla donde hay equipos de futbol.
En otra tabla inserto datos de jugadores, entre ellos para que equipo jugo y contra quien.
Cuando voy a ver los datos, pido que el select lo haga de manera que me diga, por ejemplo:

JUGADOR 1, JUGO PARA EQUIPO A CONTRA EQUIPO B

Esos 3 datos los tengo bien, pero cando hago el select aparece el problema porque yo hago:

SELECT jugadores.jugador, equipo.equipo

Pero eso solo me muestra uno de los dos equipos.

COmo puedo hacer para que me muestre los dos siendo que son dos variables que remiten a la misma tabla?

Saludos...
  #2 (permalink)  
Antiguo 04/08/2009, 08:27
Avatar de ix0ye  
Fecha de Ingreso: julio-2009
Ubicación: queretaro
Mensajes: 41
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Consulta compleja

hola lucianomdq

si entendi bien tu pregunta, creo que puedes solucionar tu problema renombrando uno de los campos por ejemplo "select jugadores.jugador as a, equipo.equipo as b" me explico?

y es posible ejecutar el select sin los nombre de las tablas

en vez de SELECT jugadores.jugador, equipo.equipo reulta lo mismo

SELECT jugador,equipo from bla bla la where bla bla bla
  #3 (permalink)  
Antiguo 04/08/2009, 09:51
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Consulta compleja

Claro pero yo tengo que seleccionar los dos equipos.
Si hago como vos decis yo reemplazo el jugadores.jugador por A y equipos.equipo por B pero me sigue mostrando solo un equipo y yo necesito que me muestre los dos.

No se si se entiende bien...

Supongamos que mi jugador es RIQUELME. Riquelme jugo para BOCA contra RIVER
Tanto BOCA como RIVER estan en una misma tabla.
Cuando yo ingreso ese partido lo hago en una tabla que se llama SEGUIMIENTO entonces ingreso el id del jugador, el id del equipo con el que jugo y el id del equipo versus.
Despues cuando yo voy a hacer esa consulta yo hago la siguiente: (TEXTUAL)

SELECT jugador.jugador, equipo.equipo
FROM jugador, equipo, seguimiento
WHERE seguimiento.id_jugador = colname AND seguimiento.equipo_versus = equipo.id_equipo

Hasta ahi todo de 10! pero yo quisiera que me muestre tambien el equipo para el que jugo Riquelme.

Se dan cuenta donde esta el problema? si yo a lo de arriba le agrego AND seguimiento.equipo_jugo = equipo.id_equipo ya tengo la variable... pero de donde saco el equipo cuyo id es igual a seguimiento.equipo_jugo ???

Espero ser claro... saludos...
  #4 (permalink)  
Antiguo 05/08/2009, 12:50
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta compleja

Hola lucianomdq

De seguro habran formas más elegantes o eficientes de hacerlo, pero esta al parecer hace lo que necesitas

Código MySQL:
Ver original
  1. j.nombre_jugador 'Nombre_Jugador',
  2. e.nombre_equipo  'Nombre de Equipo',
  3. (SELECT nombre_equipo
  4.    FROM seguimiento p
  5.    LEFT JOIN equipos c ON p.id_equipo_versus = c.id_equipo
  6.    WHERE p.id_partido = '11') 'Equipo versus'
  7. FROM seguimiento s
  8. LEFT JOIN jugadores j ON s.id_jugador = j.id_jugador
  9. LEFT JOIN equipos e ON s.id_equipo_jugador = e.id_equipo
  10. WHERE s.id_partido = '11';

Hay que ajustar los nombres de campos a tu realidad, yo hice uan pequeña base para la prueba
Saludos
  #5 (permalink)  
Antiguo 05/08/2009, 13:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Consulta compleja

Así es otra forma de hacerlo:
Código MySQL:
Ver original
  1.     j.jugador,
  2.     e.equipo,
  3.     v.equipo
  4.     seguimiento s
  5. JOIN jugadores j ON s.id_jugador = j.id
  6. JOIN equipo e ON s.equipo_jugo = e.id_equipo
  7. JOIN equipo v ON s.equipo_versus = v.id_equipo;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 05/08/2009, 13:37
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta compleja

Ya lo decia,

Me quedo con la de David, es más eficiente.

Saludos
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 12:23.