Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/02/2012, 14:35
Ozkitar
 
Fecha de Ingreso: febrero-2012
Ubicación: lima-peru
Mensajes: 24
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Error al hacer select no me llama ningun registro

Cita:
Iniciado por leonardo_josue Ver Mensaje
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.




Leo.


MUCHAS GRACIAS LEO!!

ESO ES LO QUE QUIERO QUE SALGA PERO ALGO MAS PRECISO

Código MySQL:
Ver original
  1. +----------+-----------+----------+--------+----------+--------+
  2. | idtabla2 | nombre    | nombre | nombre |
  3. +----------+-----------+----------+--------+----------+--------+
  4. |        1 | oscarzito | Carlos | oscar  |
  5. |        2 | marko      | oscar | Carlos |
  6. |        3 | yo        | Carlos| oscar  |
  7. |        4 | el         | oscar | Carlos |
  8. +----------+-----------+----------+--------+----------+--------+

QUIERO QUE MI TABLA QUEDE DE ESA MANERA..
PERDONEN MI IGNORANCIA SOY NUEVO EN ESTO VOY EN LA PRIMERA SEMANA DE CLACES INTRODUCTORIA CON MySQL y me dio esta curiosidad!
Gracias de antemano!