Вы можете объединить таблицы и использовать предложение HAVING
, чтобы сделать сравнение следующим образом:
SELECT ta.Item
FROM TableA tA
LEFT JOIN TableB tB
ON tA.Item=tB.Item
GROUP BY tA.Item
HAVING SUM(tB.Inactive)=COUNT(tb.Inactive)
Это даст вам четкий список предметов в таблице A
Приведенный выше запрос предполагает, что 1 неактивно, а 0 активно. Если ваши данные противоположны (что выглядит так), вы можете вместо этого сказать:
SELECT ta.Item
FROM TableA tA
LEFT JOIN TableB tB
ON tA.Item=tB.Item
GROUP BY tA.Item
HAVING SUM(tB.Inactive)=0
Это также вернет элемент F, так как он не имеет значения в таблице b для SUM. Просто переверните LEFT JOIN
на INNER JOIN
, если вы не хотите, чтобы возвращался элемент F.
Если вам нужно вернуть все экземпляры в TableA, вы можете использовать подзапрос и присоединиться к нему:
SELECT ta.Item
FROM TableA tA
LEFT JOIN (SELECT ITEM, SUM(ACTIVE) Sum0 FROM TableB GROUP BY ITEM)tB
ON tA.Item=tB.Item
WHERE tB.Sum0 = 0
/*or tB.Sum0 is null would give you Item F*/