Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/04/2014, 06:23
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: PROBLEMA con una subconsulta de tres tablas

Volvamos al principio:
Cita:
lo que intento es sacar las imagenes que coincidan con el id de un anuncio de un usuario determinado. Mi consulta es esta:
Código MySQL:

Código MySQL:
Ver original
  1. SELECT * from imagenes
  2. where ID_ANUNCIO in(SELECT ID from anuncios where USUARIO='25600083')

La consulta me devuelve las imagenes que coincidan con el anuncio y el usuario, pero no en orden, es decir, me muestra las imagenes en un anuncio que no le corresponde. Lo que quiero es que me saque la imagen del anuncio en concreto y no lo hace. EN teoria el id del anuncio y el de la imagen debe coinciden, pero no se porque mi consulta no me devuelve lo que creo que le estoy pidiendo.
Eso tiene todo el aspecto de datos sucios.

Partamos de la base que al usar tablas MyISAM, estás obligado a mantener la consistencia de los datos por programación, lo que en tu caso podría no cumplirse, y no lo detectarías. TEn en cuenta que tu tabla de imagenes tiene como condición que no se repitan los id_anuncio y el nombre de la imagen, pero nada restringe que sean datos válidos.
Para probar si hay datos inconsistentes hay que hacer una consulta:
Código SQL:
Ver original
  1. SELECT *
  2. FROM imagenes I LEFT JOIN anuncios A ON I.ID_ANUNCIO=A.ID
  3. WHERE A.ID IS NULL
Si esta query devuelve algo de la tabla anuncios, son anuncios que no se relacionan con imagenes.

Ahora bien, si esta otra devuelve datos inconsistentes, es decir, imagenes que no pertenecen realmente a los anuncios, lo que tienes son datos sucios:
Código MySQL:
Ver original
  1. FROM imagenes I INNER JOIN anuncios A ON I.ID_ANUNCIO=A.ID

Finalmente, me queda la duda de por qué estás usando esta COLLATION: utf8_slovenian_ci, mientras en los campos tienes utf8_spanish_ci.
¿No sería más sensato unificar la collation de la baser y las tablas a una sola?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)