SQL-запрос, который опирается на COUNT из другой таблицы? - SQLAlchemy - PullRequest
1 голос
/ 30 октября 2010

Мне нужен запрос, который может вернуть записи из таблицы A, которые имеют больше, чем записи COUNT в таблице B. Запрос должен быть в состоянии соответствовать другим фильтрам, которые могут применяться к таблице A.

Пример тематического исследования:

У меня есть таблица лиц и назначений.Я ищу всех людей, которые были на 5 или более встреч.Он также должен поддерживать дополнительные операторы фильтрации в таблице персон, например, возраст> 18.

РЕДАКТИРОВАТЬ - РЕШЕНИЕ

subquery = db.session.query(Appointment.id_person, 
                            func.count('*').label('person_count')) \
                     .group_by(Appointment.id_person).subquery()
qry = db.session.query(Person) \
                .outerjoin((subquery, Person.id == subquery.c.id_person)) \
                .order_by(Person.id).filter(subquery.c.person_count >= 5).filter(Person.dob <= '1992-10-29')

Ответы [ 2 ]

1 голос
/ 30 октября 2010

Использовать подзапрос:

SELECT * from person
WHERE PersonID IN 
  (SELECT PersonId FROM appointments
   GROUP BY PersonId
   HAVING COUNT(*) >= 5)
AND dob > 25
0 голосов
/ 30 октября 2010
SELECT Person.PersonID, Person.Name
FROM Person INNER JOIN Appointment
ON Person.PersonID = Appointment.PersonID
GROUP BY Person.PersonID, Person.Name
HAVING COUNT(Person.PersonID) >= 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...