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

Ayuda WHERE NOT o similar

Estas en el tema de Ayuda WHERE NOT o similar en el foro de Mysql en Foros del Web. Tengo 3 tablas: -una con imagenes (id) -otra con 'tags' o 'keywords' (id, tag) -y otra que hace corresponder una o más keywords a cada ...
  #1 (permalink)  
Antiguo 25/09/2009, 02:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda WHERE NOT o similar

Tengo 3 tablas:
-una con imagenes (id)
-otra con 'tags' o 'keywords' (id, tag)
-y otra que hace corresponder una o más keywords a cada imagen (id, img_id, tag_id)

Generalmente uso algo así por ejemplo:

SELECT * FROM imagenes AS a
RIGHT JOIN imagenes_tags AS b ON a.id = b.img_id
LEFT JOIN indice_tags AS c ON b.tag_id = c.id
WHERE c.tag LIKE 'arboles%'
GROUP BY b.img_id

Pero como hago si quiero encontrar aquellas imagenes, a las cuales no les corresponda ningún 'tag'?? O sea, aquellos id's de la tabla 'imagenes', que no figuren en la tabla 'imagenes_tags'??
Probe con distintas cosas, cambiando el RIGHT por LEFT (para que aparezcan todos los ids de imagenes, incluidos los que no tengan ninguna correspondencia en la tabla imagenes_tags), como WHERE c.tag = NULL, o WHERE c.tag NOT LIKE '%', y varias mas, pero ninguna me funcionó.
Es decir, traté de unir las 3 tablas y ver donde quedaban espacios en blanco, pero no se si se puede.
Como se hace??

Gracias
  #2 (permalink)  
Antiguo 25/09/2009, 06:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Ayuda WHERE NOT o similar

Prueba con not in.

Código sql:
Ver original
  1. SELECT *FROM imagenes WHERE id NOT IN(SELECT img_id FROM imagenes_tags)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/09/2009, 15:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda WHERE NOT o similar

muchas gracias, funciona

y no habra forma de optimizar esto?? me tardó 3 segundos la consulta =S

ahi probé sacando un count() q estaba usando y ahora anda rapido.. es lento el count?

Última edición por horape; 25/09/2009 a las 16:12
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 09:43.