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

Consulta de dos campos

Estas en el tema de Consulta de dos campos en el foro de Mysql en Foros del Web. Hola tengo una tabla con los siguientes campos: Tabla Retos idReto int (CLAVE PRINCIPAL) idUserA int idUserB int Tabla Usuarios idUser int (CLAVE PRINCIPAL) nombre ...
  #1 (permalink)  
Antiguo 13/05/2011, 05:36
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
Consulta de dos campos

Hola

tengo una tabla con los siguientes campos:

Tabla Retos
idReto int (CLAVE PRINCIPAL)
idUserA int
idUserB int

Tabla Usuarios
idUser int (CLAVE PRINCIPAL)
nombre varchar 100

Ahora bien, quiero hacer una consulta que me muestre el NOMBRE de los usuarios que participan en un Reto.

Si en la primera tabla tengo un registro tal que así
idReto = 1
idUserA = 3
idUserB = 5

y en la tabla de Usuarios:
idUser 3 tiene nombre "Juanito"
idUser 5 tiene nombre "Jorgito"

Pues necesito hacerme una consulta que me devuelva

idReto 1
nombreA Juanito
nombreB Jorgito

He probado con

SELECT usuarios.nombre FROM usuarios INNER JOIN retos ON retos.idUserA = usuarios.idUser

pero me muestra, logicamente, solo el nombre de Juanito.... ¿Cómo hago para que me aparezca también Jorgito en la misma línea?

un saludo
  #2 (permalink)  
Antiguo 13/05/2011, 08:15
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta de dos campos

Hola Tarzan:

Como tienes una doble referencia a una tabla, tienes que hacer un doble INNER JOIN a la tabla, utilizando alias. Sería más o menos así:

Código MySQL:
Ver original
  1. mysql> create table Retos (idReto int, idUserA int, idUserB int);
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> insert into Retos values (1, 3, 5);
  5. Query OK, 1 row affected (0.11 sec)
  6.  
  7. mysql> select * from retos;
  8. +--------+---------+---------+
  9. | idReto | idUserA | idUserB |
  10. +--------+---------+---------+
  11. |      1 |       3 |       5 |
  12. +--------+---------+---------+
  13. 1 row in set (0.00 sec)
  14.  
  15. mysql> create table usuarios (idUser int, nombre varchar(100));
  16. Query OK, 0 rows affected (0.47 sec)
  17.  
  18. mysql> insert into usuarios values (3, 'Juanito'), (5, 'Jorgito');
  19. Query OK, 2 rows affected (0.25 sec)
  20. Records: 2  Duplicates: 0  Warnings: 0
  21.  
  22. mysql> select * from usuarios;
  23. +--------+---------+
  24. | idUser | nombre  |
  25. +--------+---------+
  26. |      3 | Juanito |
  27. |      5 | Jorgito |
  28. +--------+---------+
  29. 2 rows in set (0.00 sec)
  30.  
  31. mysql> select R.idReto, U1.nombre nombreA, U2.nombre nombreB from
  32.     -> Retos R
  33.     -> inner join usuarios U1 on R.idUserA = U1.idUser
  34.     -> inner join usuarios U2 on R.idUserB = U2.idUser;
  35. +--------+---------+---------+
  36. | idReto | nombreA | nombreB |
  37. +--------+---------+---------+
  38. |      1 | Juanito | Jorgito |
  39. +--------+---------+---------+
  40. 1 row in set (0.02 sec)

Saludos
Leo.

Etiquetas: 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.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.