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

Problemas con INNER JOIN

Estas en el tema de Problemas con INNER JOIN en el foro de Mysql en Foros del Web. Hola que tal, lo que pasa es que tengo dos tablas una llamada TMP_IMAGENES y la otra IMAGENES con todos los campos iguales y cuando ...
  #1 (permalink)  
Antiguo 04/08/2011, 19:53
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Problemas con INNER JOIN

Hola que tal, lo que pasa es que tengo dos tablas una llamada TMP_IMAGENES y la otra IMAGENES con todos los campos iguales y cuando muestro las imagenes ya sea de una u otra tabla con esta consulta funciona bien

Código MySQL:
Ver original
  1. SELECT * FROM TMP_IMAGENES TI INNER JOIN THUMBNAILS T ON TI.ID = T.ID WHERE TI.ID = '".mysql_real_escape_string($_GET['id'])."'

Y lo que quiero hacer es incluir ambas tablas en la misma consulta pero no se como pueda hacerle, le he intentado de esta manera pero no funciona :S

Código MySQL:
Ver original
  1. TMP_IMAGES TI INNER JOIN THUMBNAILS T ON TI.ID = T.ID
  2. IMAGES I INNER JOIN THUMBNAILS T ON I.ID = T.ID
  3. WHERE TI.ID AND I.ID = '".mysql_real_escape_string($_GET['id'])."'

Si alguien me pudiera ayudar se los agradeceria mucho

Saludos!
  #2 (permalink)  
Antiguo 05/08/2011, 05:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con INNER JOIN

Estás repitiendo la invocación a una tabla innecesariamente , y te falta el INNER JOIN respectivo:
Código MySQL:
Ver original
  1.     TMP_IMAGES TI
  2.     INNER JOIN
  3.     THUMBNAILS T ON TI.ID = T.ID
  4.     INNER JOIN
  5.     IMAGES I ON T.ID = I.ID
  6.     TI.ID AND I.ID = '.mysql_real_escape_string($_GET['id']).'
__________________
¿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 05/08/2011, 11:32
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Problemas con INNER JOIN

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Estás repitiendo la invocación a una tabla innecesariamente , y te falta el INNER JOIN respectivo:
Código MySQL:
Ver original
  1.     TMP_IMAGES TI
  2.     INNER JOIN
  3.     THUMBNAILS T ON TI.ID = T.ID
  4.     INNER JOIN
  5.     IMAGES I ON T.ID = I.ID
  6.     TI.ID AND I.ID = '.mysql_real_escape_string($_GET['id']).'
Gracias gnzsoloyo por responder, lo he intentado asi como me pusiste y no trae ningun resultado, esto lo compruebo asi

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(mysql_num_rows($result) == 0) {
  4.     echo "<div class=\"error\">Hmm, the image requested can’t be found in the server.</div>";
  5.     exit;
  6. }
  7.  
  8. ?>

Saludos!
  #4 (permalink)  
Antiguo 05/08/2011, 11:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con INNER JOIN

Si no genera error, pero tampoco trae resultados es que no hay registros que cumplan con el INNER JOIN (tienen que darse en las tres tablas al mismo tiempo), o estamos relacionando campos que no están efectivamente relacionados...
Asegúrate que los campos en el ON (ambos casos) sean respectivamente PK y FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/08/2011, 12:02
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Problemas con INNER JOIN

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si no genera error, pero tampoco trae resultados es que no hay registros que cumplan con el INNER JOIN (tienen que darse en las tres tablas al mismo tiempo), o estamos relacionando campos que no están efectivamente relacionados...
Asegúrate que los campos en el ON (ambos casos) sean respectivamente PK y FK.
hohoho talvez sea por eso porque las tablas TMP_IMAGES y IMAGES no estan relacionadas entre si, pero si estan ralacionadas con THUMBNAILS; en ese caso que se puede hacer???

Saludos!
  #6 (permalink)  
Antiguo 05/08/2011, 12:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con INNER JOIN

Armar bien el diseño y poner las FK correspondientes, o bien hacer el INNER JOIN usando el campo que efectivamente está relacionado.

Mi sugerencia es que antes de seguir avanzando rediseñes bien la base de datos y pongas las relaciones correctamente. Modificar una base sobre la marcha, o luego de hacer la página es una pesadilla.

Lo que tienes que considera es como es la secuencia de relaciones:
1) ¿El usuario sube imágenes? En cada Imagen va la FK que corresponde a ese usuario.
2) ¿Sube imagenes temporales? En cada imagen temporal va la FK del usuario.
3) Cada imagen tiene un thumbnail? En cada thumbnail va la fk de la imagen (la del usuario ya viene con esa relación).
El problema es que no puedes relacionar la tabla thumbnails con dos tablas de imágenes al mismo tiempo, porque no te lo admitirá, entonces lo tienes que pensar así:
- Imagenes es tabla madre. imagenes_final es subtabla de imagenes, e imagenes_temp también
- Thumbnails se relaciona con Imágenes.

En otras palabras, es un esquema de cuatro tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 05/08/2011, 12:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Problemas con INNER JOIN

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Armar bien el diseño y poner las FK correspondientes, o bien hacer el INNER JOIN usando el campo que efectivamente está relacionado.

Mi sugerencia es que antes de seguir avanzando rediseñes bien la base de datos y pongas las relaciones correctamente. Modificar una base sobre la marcha, o luego de hacer la página es una pesadilla.

Lo que tienes que considera es como es la secuencia de relaciones:
1) ¿El usuario sube imágenes? En cada Imagen va la FK que corresponde a ese usuario.
2) ¿Sube imagenes temporales? En cada imagen temporal va la FK del usuario.
3) Cada imagen tiene un thumbnail? En cada thumbnail va la fk de la imagen (la del usuario ya viene con esa relación).
El problema es que no puedes relacionar la tabla thumbnails con dos tablas de imágenes al mismo tiempo, porque no te lo admitirá, entonces lo tienes que pensar así:
- Imagenes es tabla madre. imagenes_final es subtabla de imagenes, e imagenes_temp también
- Thumbnails se relaciona con Imágenes.

En otras palabras, es un esquema de cuatro tablas.
Mira tengo 7 tablas:

IMAGES > IUID | ID | NAME TYPE | SIZE | DIMENSIONS | DATE |LOCATION | BASE_64 | PIN

TMP_IMAGES > IUID | ID | NAME TYPE | SIZE | DIMENSIONS | DATE |LOCATION | BASE_64 | PIN

USERS > IUID | UPLOADS | DATE | EMAIL

TMP_USERS > IUID | UPLOADS | DATE | EMAIL

THUMBNAILS > ID | SQUARE_75 | MEDIUM_640

REPORTS > ID | #

BANNED > IUID | MOTIVE | EXPIRE

La tabla TMP_IMAGES son las imagenes subidas que no han sido activas y cuando se activan se cambian a IMAGES para que se no sean borradas al igual como ocurre en las tablas TMP_USERS y USERS.

Estaba viendo si eliminar la tabla TMP_IMAGES y TMP_USERS y agregarles un campo llamado STATUS y asi evitarme muchos problemas pero como es mejor, tu que me recomiendas???

Saludos!

Última edición por WinderJerter; 05/08/2011 a las 12:54 Razón: incompleto
  #8 (permalink)  
Antiguo 05/08/2011, 20:11
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Problemas con INNER JOIN

Hola que tal, he modificado las bases de datos TMP y quedo de esta manera

TMP_IMAGES > ID | DATE

TMP_USERS > IUID | DATE

Ahora las imágenes se guardan directamente en IMAGES y los usuarios en USERS y asi tener un mejor control. Ustedes que opinan?

Saludos!

Etiquetas: campos, join, select, sql, tabla
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 03:05.