Checking if no rows exist for a primary key SQL
===

I have four (relevent) tables

    CAKETABLE
    CAKE      ICING

    RESERVEDSPRINKLES
    CAKE      SPRINKLE

    SPRINKLETABLE
    SPRINKLE  CONSUMED

    ICINGTABLE
    ICING     CONSUMED

Each cake has exactly 3 sprinkles and 1 icing.

I want to query the database and get all the cakes that have 1 icing and 3 sprinkles where neither icing nor any of the sprinkles have CONSUMED = '1'.

So let's psuedo insert data:
    INSERT INTO ICINGTABLE (vanilla, 0), (chocolate, 0);
    
    INSERT INTO SPRINKLETABLE (red, 0), (blue, 0), (green, 0), (orange, 0), (purple, 0),(pink, 0);
    
    INSERT INTO CAKETABLE (cake1, vanilla), (cake2, chocolate);

    INSERT INTO RESERVEDSPRINKLES (cake1, red), (cake1, blue), (cake1, green), (cake2, orange), (cake2, purple), (cake2, pink);

So now I have cake1 with vanilla icing and red,blue,green sprinkles and cake2 with chocolate icing and orange, purple, and pink sprinkles.

When I run the query, I want it to return

    CAKES
    cake1
    cake2

ONLY IF there are no consumed parts in the cake, so even if ONE sprinkle is marked consumed I want to omit that whole cake from the query.
The following query does exactly that for icing.

    SELECT CAKE
    FROM CAKETABLE as c
    INNER JOIN (SELECT * FROM ICINGTABLE WHERE CONSUMED = '0') as i
    ON c.CAKE = i.CAKE;

But for the sprinkles, I am having trouble. If I use the same technique as above, my query will return:

    CAKE
    cake1
    cake1
    cake1
    cake2
    cake2
    cake2

I can eliminate that with DISTINCT, but it still isn't correct because if any sprinkle has consumed = '0' it shows that cake in the list when I want the opposite functionality (cake only shown if ALL sprinkles have consumed = '0')

If anyone has a better title name for this, it'd be appreciated. I can't think of anything descriptive and short.