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

Consulta doble para un mismo campo, pero distinta condición

Estas en el tema de Consulta doble para un mismo campo, pero distinta condición en el foro de Mysql en Foros del Web. Bueno, a ver si me entienden... recién estoy empezando con MYSQL, y quiero realizar una consulta simple, pero hay algo que no me deja hacerlo... ...
  #1 (permalink)  
Antiguo 30/10/2012, 07:20
 
Fecha de Ingreso: octubre-2012
Ubicación: Santa Fe, Capital
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Consulta doble para un mismo campo, pero distinta condición

Bueno, a ver si me entienden... recién estoy empezando con MYSQL, y quiero realizar una consulta simple, pero hay algo que no me deja hacerlo... paso a explicar...
Tengo una tabla "Partidos", otra "Jugador", ahora necesito lo siguiente... debo mostrar un tipo fixture, teniendo en cuenta que son partidos de tennis, por lo que va a haber 2 registros de la tabla Jugador (jugador 1 y jugador 2), en un solo registro de la tabla partido... ejemplo:

Tabla Jugador
[IDJugador][Nombre][Apellido]...

Tabla Patido
[IDPartido][Fecha][IDJugador1][IDJugador2][IDCancha]

Ahora, lo que me complica es eso mismo, quiero hacer un consulta donde me muestre todos los partidos (Ordenados por su ID), con la fecha, la cancha en que se juega, pero, también los apellidos de los 2 jugadores... Alguien me da una mano? con el SELECT lo unico que he podido rescatar es hasta un solo apellido, además de todos los otros datos, pero no se como poner el 2do apellido ya que el SELECT es el mismo campo... no se si me entienden.

Bueno, si no entienden explico de nuevo...

Gracias a todos por su ayuda!

Última edición por luchale; 30/10/2012 a las 07:23 Razón: Errores tipograficos :D
  #2 (permalink)  
Antiguo 30/10/2012, 08:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Se invoca dos veces la tabla de jugadores, con alias distintos y referidos a cada relación por separado.
Algo como:
Código MySQL:
Ver original
  1. SELECT P1.*, J1.*, J2.*
  2. FROM partidos P INNER JOIN jugadores J1 ON P.jugador1 = J1.jugador_id
  3.     INNER JOIN jugadores J2 ON P.jugador2 = J2.jugador_id
  4.  
  5. WHERE (el resto de la condiciones)
__________________
¿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 30/10/2012, 10:42
 
Fecha de Ingreso: octubre-2012
Ubicación: Santa Fe, Capital
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Excelente, no tenia bien en claro el tema de los ALIAS, pero intentando un poco salió... ahora me saltó otra duda!
Tengo:
1 tabla persona
[ID] y datos comunes (nombre, apellido, DNI, mail)

1 tabla jugador (relacionado con Persona)
[IDJugador][IDpersona]

y la tabla Partidos anteriormente vista...

Se complica el tema de buscar primero el ID del jugador para luego obtener el ID de la persona, y así obtener, finalmente, el Apellido...

Si tomamos el ID persona como ID de jugador (cosa incorrecta), el resultado de la consulta es el esperado... este es mi código:


Código MySQL:
Ver original
  1. SELECT partido.id_partido, partido.id_torneo, j1.apellido, j2.apellido, partido.lugar, partido.fecha
  2. FROM partido, persona j1, persona j2, jugador
  3. WHERE partido.id_jugador_1= j1.id_persona
  4. AND partido.id_jugador_2=j2.id_persona

Hace lo que quiero, pero debería tomar el ID del jugador como tal, no como el ID de la persona... se entiende?

Muchisimas gracias por la onda!!!
  #4 (permalink)  
Antiguo 31/10/2012, 11:00
 
Fecha de Ingreso: octubre-2012
Ubicación: Santa Fe, Capital
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: Consulta doble para un mismo campo, pero distinta condición

Ya he resuelto mis dudas con Subconsultas y alias... me código ha quedado de la siguiente manera:

Código SQL:
Ver original
  1. SELECT tabla.id_partido AS "ID Partido", tabla.id_torneo "ID Torneo", tabla.nombre_torneo AS "Nombre del torneo", tabla.apellido1 AS "Apellido jugador 1", tabla.apellido2 AS "Apellido jugador 2", tabla.lugar AS "Lugar", tabla.fecha AS "Fecha"
  2. FROM (
  3.     SELECT p1.id_jugador AS "Jugador1", p2.id_jugador AS "Jugador2", j1.apellido AS "Apellido1", j2.apellido "Apellido2", torneo.id_torneo, torneo.nombre_torneo, partido.id_partido, partido.lugar, partido.fecha
  4.     FROM jugador p1, jugador p2, persona j1, persona j2, partido, torneo
  5.     WHERE partido.id_jugador_1 = p1.id_jugador
  6.     AND partido.id_jugador_2 = p2.id_jugador
  7.     AND p1.id_persona = j1.id_persona
  8.     AND p2.id_persona = j2.id_persona
  9.     AND torneo.id_torneo = partido.id_torneo
  10. ) AS tabla

Funcionando a la perfección... seguramente hay alguna manera mucho más sencilla, pero con esa, la consulta es rápida y eficiente.

Gracias :D

PD: Pueden cerrar el tema.

Etiquetas: condición, distinta, doble, registros, select, sql, tabla, tipo, campos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:41.