--9 PROJECT [SNAME] (SELECT [SCITY = 'Houston'] (SUPPLIER)); -- 16 (Part JOIN (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY)))) UNION (Part JOIN (PROJECT [PNUM] (SELECT [SNUM = 'S2'] (SUPPLY)))); -26 Active supplier numbers: PROJECT [SNUM] (Supply); All supplier numbers: PROJECT [SNUM] (Supplier); Answer: PROJECT [SNUM] (Supplier) MINUS PROJECT [SNUM] (Supply); - 30 All part numbers by S1: PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY)); All supplier numbers: PROJECT [SNUM] (SUPPLIER); All (SNUM, PNUM) pairs, where PNUM is supplied by S1. (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY))) JOIN (PROJECT [SNUM] (SUPPLIER)); (PROJECT [SNUM] (SUPPLIER)) TIMES (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY))); Supply without quantity: PROJECT [SNUM, PNUM] (SUPPLY); Parts (supplied by S1) that are not supplied by supplier: ((PROJECT [SNUM] (SUPPLIER)) TIMES (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY)))) MINUS (PROJECT [SNUM, PNUM] (SUPPLY)); SNUM that does not supplied some parts (supplied by S1): These SNUM should not be in the result: PROJECT [SNUM] (((PROJECT [SNUM] (SUPPLIER)) TIMES (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY)))) MINUS (PROJECT [SNUM, PNUM] (SUPPLY))); ANswer: (PROJECT [SNUM] (SUPPLIER)) MINUS PROJECT [SNUM] (((PROJECT [SNUM] (SUPPLIER)) TIMES (PROJECT [PNUM] (SELECT [SNUM = 'S1'] (SUPPLY)))) MINUS (PROJECT [SNUM, PNUM] (SUPPLY)));