Quote:
I am left with a collection of sites that only have all deleted (or not-deleted) domains?
Your current queries will return duplicate sites, one for each domain in the site.
Change your current queries to:
SELECT id, name
FROM sites
WHERE EXISTS
(
SELECT 1
FROM domains
WHERE domains.site = sites.id
AND domains.is_deleted = 1
);
SELECT id, name
FROM sites
WHERE EXISTS
(
SELECT 1
FROM domains
WHERE domains.site = sites.id
AND domains.is_deleted = 0
);
It should then be easier to see how to achieve your other queries:
SELECT id, name
FROM sites
WHERE NOT EXISTS
(
SELECT 1
FROM domains
WHERE domains.site = sites.id
AND domains.is_deleted = 0
);
SELECT id, name
FROM sites
WHERE NOT EXISTS
(
SELECT 1
FROM domains
WHERE domains.site = sites.id
AND domains.is_deleted = 1
);