Возникли проблемы с фильтрацией в моем запросе sqlite3.Я работаю с тремя таблицами ниже.
Table: models
id|data
1|car
2|truck
Table: descriptions
id|model_id|colour|make
1|1|blue|accord
2|1|green|prius
3|1|red|fusion
4|1|black|civic
5|1|white|jeep
6|1|purple|jeep
7|1|brown|jeep
8|1|brown|civic
Table: banned
model_id|colour_id|colour
1|3|black|
1|15|brown|
Нижеследующее утверждение подсчитывает, сколько из какой модели (легковых или грузовых автомобилей) делают.
SELECT models.id, make, count(make)
FROM description
JOIN models ON models.id = descriptions.model_id
GROUP BY models.id, descriptions.make;
Вывод будет ниже
1|accord|1
1|prius|1
1|fusion|1
1|civic|2
1|jeep|3
Однако я хочу добавить квалификатор, который аннулирует все, что содержит запрещенную комбинацию цвета / модели, используя banned.colour.Я попытался присоединиться к таблице и отфильтровать, как показано ниже, но, кажется, счет удваивается.
SELECT models.id, make, count(make)
FROM description
JOIN models ON models.id = descriptions.model_id
JOIN banned ON banned.model_id = models.id
WHERE NOT ( banned.colour = descriptions.colour)
GROUP BY models.id, descriptions.make;
Мой желаемый результат - аннулировать две машины, которые соответствуют этому классификатору из подсчета.Окончательный результат должен быть ниже
1|accord|1
1|prius|1
1|fusion|1
1|jeep|2
Как мне этого добиться?