Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/10/2011, 08:22
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Consulta multitabla con doble clave foránea

Hola latinpower:

Siempre es mejor opción utilizar JOIN'S cuando tienes más de una tabla en tu consulta:

En lugar de poner esto:
Código:
FROM Tabla1, Tabla2 
WHERE Tabla1.Campo = Tabla2.Campo
Es mejor poner esto:

Código:
FROM Tabla1 INNER JOIN Tabla2
ON Tabla1.Campo = Tabla2.Campo
Ahora bien, con respecto a tu problema, es necesario "duplicar" tu tabla jugadores en la consulta, utilizando Alias, para hacer un JOIN con cada uno de los ID's. Tal y como estás poniendo tu consulta sería como pedirle a un arbol de manzanas que dé manzanas pero que también dé naranjas, cosa que no es posible.

Sería más o menos así:

Código MySQL:
Ver original
  1. mysql> create table jugadores (id_player int, nombre varchar(10));
  2. Query OK, 0 rows affected (0.17 sec)
  3.  
  4. mysql> insert into jugadores values (1, 'uno'), (2, 'dos'), (3, 'tres');
  5. Query OK, 3 rows affected (0.12 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from jugadores;
  9. +-----------+--------+
  10. | id_player | nombre |
  11. +-----------+--------+
  12. |         1 | uno    |
  13. |         2 | dos    |
  14. |         3 | tres   |
  15. +-----------+--------+
  16. 3 rows in set (0.17 sec)
  17.  
  18. mysql> create table juego (id_game int, id_player_1 int, id_player_2 int);
  19. Query OK, 0 rows affected (0.11 sec)
  20.  
  21. mysql> insert into juego values (1, 1, 2), (2, 1, 3), (3, 2, 3);
  22. Query OK, 3 rows affected (0.04 sec)
  23. Records: 3  Duplicates: 0  Warnings: 0
  24.  
  25. mysql> select * from juego;
  26. +---------+-------------+-------------+
  27. | id_game | id_player_1 | id_player_2 |
  28. +---------+-------------+-------------+
  29. |       1 |           1 |           2 |
  30. |       2 |           1 |           3 |
  31. |       3 |           2 |           3 |
  32. +---------+-------------+-------------+
  33. 3 rows in set (0.00 sec)
  34.  
  35. mysql> select J.id_game, J1.nombre, J2.nombre
  36.     -> from juego J
  37.     -> inner join jugadores J1 on J.id_player_1 = J1.id_player
  38.     -> inner join jugadores J2 on J.id_player_2 = J2.id_player;
  39. +---------+--------+--------+
  40. | id_game | nombre | nombre |
  41. +---------+--------+--------+
  42. |       1 | uno    | dos    |
  43. |       2 | uno    | tres   |
  44. |       3 | dos    | tres   |
  45. +---------+--------+--------+
  46. 3 rows in set (0.06 sec)

Dale un vistazo y si continuas con problemas lo comentas en el foro.

Saludos
Leo.