Hola X3mdesign:
No me queda claro, pero supongo que en tu tabla items_categorias el campo
id_item es tu llave foránea hacia tu tabla
Artículos... mucho ojo con eso, veo que en tus tres tablas manejas el mismo atributo id, esto no es una buena práctica... es preferible que en tu tabla Artículos pongas tu campo llave como id_item, lo mismo en tu tabla categorías... en lugar de dejar el campo como id podrías dejarlo como id_categoría, de esta manera las relaciones quedan con la misma referencia, pero bueno, eso es solo una buena práctica de SQL...
Con respecto a tu problema, en realidad tienes varias formas para llegar al mismo resultado, podrías utilizar NOT IN o NOT EXISTS para filtrar los datos que quieres... sería más o menos así:
Código MySQL:
Ver original+------+--------------+---------+
| id | id_categoria | id_item |
+------+--------------+---------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
| 4 | 1 | 2 |
| 4 | 2 | 2 |
| 4 | 1 | 3 |
| 4 | 3 | 3 |
+------+--------------+---------+
-> FROM items_categorias I1
-> FROM items_categorias I2
-> I2.id_categoria = 2 );
+---------+
| id_item |
+---------+
| 3 |
+---------+
-> FROM items_categorias I1
-> WHERE I1.id_categoria
= 1 AND id_item
-> FROM items_categorias I2
-> WHERE I2.id_categoria
= 2 ); +---------+
| id_item |
+---------+
| 3 |
+---------+
Dale un vistazo para ver si es lo que necesitas.
Saludos
Leo.