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

Consulta existencia en dos tablas

Estas en el tema de Consulta existencia en dos tablas en el foro de Mysql en Foros del Web. Buenas, quiero hacer una consulta en la que me muestren productos que estén validados y que no se encuentren en la tabla imagen. Con la ...
  #1 (permalink)  
Antiguo 08/05/2012, 07:18
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 14 años, 4 meses
Puntos: 7
Consulta existencia en dos tablas

Buenas, quiero hacer una consulta en la que me muestren productos que estén validados y que no se encuentren en la tabla imagen.

Con la consulta siguiente recupero las idProducto que no se encuentren dentro de la tabla images, pero me salen todos y no sólo los que tengan en el campo prodValido =1( es decir, validados). No me filtra esa condición.

Código:
SELECT idProducto
FROM tb_productos
WHERE prodValido = 1 AND idProducto NOT IN (SELECT idProducto FROM tb_images))
Alguien encuentra donde está el error de lo que quiero hacer?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 08/05/2012, 07:42
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: Consulta existencia en dos tablas

Código MySQL:
Ver original
  1. SELECT idProducto
  2. FROM tb_productos tp LEFT JOIN tb_images ti ON tp.idProducto = ti.idProducto
  3. WHERE tp.prodValido = 1 AND ti.idProducto IS NULL;
__________________
¿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 08/05/2012, 09:29
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Consulta existencia en dos tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código MySQL:
Ver original
  1. SELECT idProducto
  2. FROM tb_productos tp LEFT JOIN tb_images ti ON tp.idProducto = ti.idProducto
  3. WHERE tp.prodValido = 1 AND ti.idProducto IS NULL;
Muchísimas gracias, me ha salido lo que quería.

He tenido un problema, la idProducto no me la imprime porque me dice que es ambigua al encontrarse en ambas tablas. He puesto (*) en el select para que me salga aunque sea el nombre y no la id ¿ sabes a qué se debe?

y otra cosa, qué significado tiene tp y ti, nunca lo he usado y no me aclaro en el modo de emplearlo.


Muchísimas gracias de antemano..
  #4 (permalink)  
Antiguo 08/05/2012, 09:49
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: Consulta existencia en dos tablas

Es que esa columna aparece con el mismo nombre en ambas, por lo que MySQL no sabe a cuál te refieres.
En ese caso simplemente hay que indicar la tabla:
Código MySQL:
Ver original
  1. SELECT tp.idProducto
  2. FROM tb_productos tp LEFT JOIN tb_images ti ON tp.idProducto = ti.idProducto
  3. WHERE tp.prodValido = 1 AND ti.idProducto IS NULL;
__________________
¿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 08/05/2012, 10:08
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Consulta existencia en dos tablas

Ya lo resolví.

Muchísimas gracias por todo.

Etiquetas: existencia, select, tabla, tablas, 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 05:53.