SQL: obtener productos de una categoría, pero también debe estar en otro conjunto de categorías

Actualmente estoy atrapado en una situación. El escenario es este. Tengo productos que pueden estar asociados con múltiples categorías. La estructura de datos se muestra a continuación:

Products Table:
product_id  name 
1           Lemon
2           Kiwis
3           Cheese

Tabla de productos a categorías

product_id   category_id
1            1
1            2
1            3
2            1
2            3
3            2
3            4

Tabla de categorías (no se requiere en la consulta, sin embargo, se agrega aquí para ayudar a visualizar lo que está sucediendo)

category_id  name
1            Fruit
2            Yellow
3            Round
4            Dairy

Con lo que estoy luchando aquí es que originalmente quiero obtener todos los productos que están en la categoría de fruta (categoría id 1), pero también quiero verificar si una fruta es amarilla. Tenga en cuenta que el amarillo no será el único filtro, a veces querré devolver las frutas amarillas y naranjas, sin embargo, dado que el queso es amarillo, no puedo devolverlo ya que no es una fruta. Sin embargo, para hacer las cosas un poco más fáciles, siempre sé que voy a considerar la categoría de fruta como una base.

La estructura de la base de datos no puede cambiar, ya que es una estructura de base de datos abierta.

Aquí están mis intentos:

SELECT GROUP_CONCAT(DISTINCT p2c2.category_id SEPARATOR ',') as categories 
FROM oc_product_to_category p2c 
LEFT JOIN oc_product p ON (p.product_id = p2c.product_id) 
LEFT JOIN oc_product_to_category p2c2 ON (p.product_id = p2c2.product_id) 
WHERE p2c.category_id IN ('1','2')

Este tipo de obras excepto por el hecho de que devolverá el queso.

Notas: Utilizo Group Concat porque al final de todo esto, mi objetivo es devolver no tanto los productos que coinciden con estas categorías, sino que, en función de los filtros, deseo devolver otra lista de categorías de los productos que cumplen con este criterio. Asi que:

Guión:

Obtener productos que coincidan con los criterios de categoría Devolver categorías de esos productos.

Cualquier asistencia será muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta