Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/02/2009, 02:17
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 10 meses
Puntos: 300
Respuesta: Filtrar resultados que están en varias categorías

metacortex,

Código sql:
Ver original
  1. SELECT a.articulos, c.categoria FROM articulos a INNER JOIN relacion r ON a.articulos_id = r.articulos_refid
  2. INNER JOIN categorias c ON c.categorias_id = r.categorias_refid
  3. WHERE r.categorias_refid = 32 OR r.categorias_refid = 17
  4. GROUP BY a.articulos_id
  5. HAVING COUNT(DISTINCT r.categorias_refid) > 1
Te explicaré algo la consulta (he inventado nombres para los campos que me faltan, concretamente los que relacionan las tablas; adapta la sintaxis a los nombres de tus campos):
El problema (que no es tal problema, pues la estructura está bien) es que en cada registro de relación incluye sólo un categorias_refid, y tú quieres encontrar los dos, algo que nunca encontrarás en un registro. Te toca agrupar por artículos y buscar uno u otro numero y luego ver un count superior a uno. El único peligro es que tuvieras repetido alguno de ellos, es decir, dos del mismo artículo que tuvieran el mismo categorias_refid; de ahí la necesidad de poner distinct, aunque eso es algo que podrías controlar con programación. En cualquier caso, esta es la idea. Si no te funciona, pon los nombres de los campos de las tablas e dinos por cuáles estan relacionadas y te ofreceremos la sintaxis. No la he probado.

Última edición por jurena; 05/02/2009 a las 02:24