Предположим, что мы имеем гипотетическую таблицу, которая выглядит примерно так:Peewee: используя COUNT (*) в запросе выборки
id color group_id
---------- ------------- ----------
1 red 100
2 blue 101
3 orange 100
4 red 102
5 pink 103
6 red 104
7 orange 104
8 orange 105
Я хочу, чтобы выбрать идентификатор группы, который содержит в себе все цвета определенного набора цветов. Предположим, я хочу найти идентификатор группы, где находятся red
и orange
. Необработанный SQL-запрос будет что-то вроде:
SELECT group_id
FROM colors
WHERE color
IN ('red', 'orange')
GROUP BY group_id
HAVING COUNT(*) = 2;
Это вернет идентификатор группы 100
и 104
. Что такое Peewee SelectQuery для этого? У меня возникли проблемы с тем, как представить бит COUNT(*)
.
Awesome, спасибо за указателем. Я также пришел к аналогичному решению в конце, но использовал 'fn.Count (fn.Distinct (Colors.id))' в предложении '.having'. Отличный блог кстати! – mart1n