Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/02/2012, 13:51
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Error al hacer select no me llama ningun registro

Hola Ozkitar:

Tal pareciera que no haz puesto atención a lo que te han pedido que hagas... este es el tercer post que abres acerca del mismo tema en lugar se seguir con el mismo post hasta darlo por cerrado.

En el Post anterior Ribon te pedia que revisaras el uso de JOIN's en las consultas, veo que lo estás utilizando, pero no lo estás haciendo correctamente... los JOIN's UTILIZAN LA CLÁUSULA ON PARA HACER LAS UNIONES, no el WHERE... tal como lo estás poniendo se realiza un producto cartesiano entre las tablas.

Segundo, la consulta no te está egresando ningún registro pues la condición que pones ES IMPOSIBLE DE QUE OCURRA, al menos con los datos que estás colocando... al poner esto:

Código:
WHERE 
tabla2.idtabla1_2 = tabla1.idtabla1 AND 
tabla2.idtabla1_1 = tabla1.idtabla1
estás diciendo que el idtabla1_1 y el idtabla1_2 SEAN IGUALES, cosa que nunca sucede... matemáticamente estarías diciendo lo siguiente

Código:
A = B y C = B por lo tanto A = C
No estoy seguro de qué es lo que quieres obtener como resultado, pero veamos si esto te sirve. Al tener una REFERENCIA DOBLE en tu tabla2 (es decir dos campos distintos apuntando hacia la tabla1) debes usar DOS VECES LA TABLA1 utilizando un alias, para poder hacer cada join por separado.

Checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM Tabla1;
  2. +----------+--------+
  3. | idtabla1 | nombre |
  4. +----------+--------+
  5. |        1 | oscar  |
  6. |        2 | Carlos |
  7. +----------+--------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM Tabla2;
  11. +----------+------------+------------+-----------+
  12. | idtabla2 | idtabla1_1 | idtabla1_2 | nombre    |
  13. +----------+------------+------------+-----------+
  14. |        1 |          2 |          1 | oscarzito |
  15. |        2 |          1 |          2 | marko     |
  16. |        3 |          2 |          1 | yo        |
  17. |        4 |          1 |          2 | el        |
  18. +----------+------------+------------+-----------+
  19. 4 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT
  22.     -> T2.idtabla2, T2.nombre,
  23.     -> T1A.idTabla1, T1A.nombre,
  24.     -> T1B.idTabla1, T1B.nombre
  25.     -> FROM tabla2 T2
  26.     -> INNER JOIN tabla1 T1A ON T2.idtabla1_1 = T1A.idtabla1
  27.     -> INNER JOIN tabla1 T1B ON T2.idtabla1_2 = T1B.idtabla1
  28.     -> ORDER BY idtabla2;
  29. +----------+-----------+----------+--------+----------+--------+
  30. | idtabla2 | nombre    | idTabla1 | nombre | idTabla1 | nombre |
  31. +----------+-----------+----------+--------+----------+--------+
  32. |        1 | oscarzito |        2 | Carlos |        1 | oscar  |
  33. |        2 | marko     |        1 | oscar  |        2 | Carlos |
  34. |        3 | yo        |        2 | Carlos |        1 | oscar  |
  35. |        4 | el        |        1 | oscar  |        2 | Carlos |
  36. +----------+-----------+----------+--------+----------+--------+
  37. 4 rows in set (0.00 sec)

Observa que la tabla1 se usa dos veces con los alias (T1A y T1B). Si esto no es lo que necesitas por favor dinos qué es lo que esperas de salida a partir de tus datos.


Cita:
EDITO: el compañero gnzsoloyo se adelantó 5 segundos a mi respuesta, es prácticamente la misma. Saludos
Saludos
Leo.