FIRST of all there is a MANY-TO-MANY relation between 'sid' & 'pid' in Catalog.
So "A SUPPLIER MIGHT HAVE SUPPLIED BOTH BLUE & NON BLUE PARTS".
The Above Query will Return 'sname' if atleast COMPULSORILY 1 part supplied by a Supplier is NON-BLUE. But it is possible that the supplier might also have Supplied A Blue Part bcoz of many-to-many relation.
Means atleast 1 should by compulsory non-blue for name to be printed. Other parts color doesnt matter .
opt (a) : TRUE -> If he has supplied a (atleast 1) non blue part , his name will be printed , he might have also supplied a blue part but doesn't matter , opt (a) has no problem with that .
opt (b) : FALSE -> Inverse of opt(a) so FALSE.
opt (c) : FALSE -> As said above , he might have supplied both blue and non - blue bcoz of many-to-many relation.
opt (d) : FALSE -> GIVEN THAT ->Find the names of all suppliers who have not supplied only blue parts.
It might be confusing to understand this english .
-> "not supplied only blue parts" means they assume that there are already compulsorily BLUE parts supplied. Means there should be COMPULSORILY BLUE supplied , along with that , also some NON BLUE part also supplied by the SUPPLIER .
BUT THE QUERY IN QUESTION RETURNS TRUE ALSO WHEN THERE ARE ONLY NON BLUE Parts supplied and no BLUE PARTS at all .
BUT opt (d) assumes that there are already blue parts bcoz of these 5 words : "not supplied only blue parts".