metacortex,
Código sql:
Ver originalSELECT a.articulos, c.categoria FROM articulos a INNER JOIN relacion r ON a.articulos_id = r.articulos_refid
INNER JOIN categorias c ON c.categorias_id = r.categorias_refid
WHERE r.categorias_refid = 32 OR r.categorias_refid = 17
GROUP BY a.articulos_id
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.