Вы пропускаете только оператор GROUP BY
.Выражение COUNT(*)
предоставит количество записей с заданной датой entry_date.
rework_records = DB.session.from_statement('''SELECT NonConformanceRecord.entry_date, COUNT(*)
FROM ReworkRecord
JOIN NonConformanceRecord ON NonConformanceRecord.id == ReworkRecord.nonconformance_id
JOIN Part
JOIN Product
WHERE Product.id == form.product_family.data
GROUP BY NonConformanceRecord.entry_date
ORDER BY NonConformanceRecord.entry_date DESC''')
Я не слишком знаком с тем, как вы это написали, но я думаю, что это будет просто:
rework_records = DB.session.query(NonConformanceRecord.entry_date, COUNT(*)).join(
NonConformanceRecord, NonConformanceRecord.id == ReworkRecord.nonconformance_id
).join(
Part
).join(
Product
).filter(
Product.id == form.product_family.data).group_by(
NonConformanceRecord.entry_date).order_by(
desc(NonConformanceRecord.entry_date)
).all()
Верхний должен делать то же самое в том случае, если эта вторая часть не работает.Тем не менее, я не знаю, откуда вы взяли form.product_family.data
, поскольку вы не присоединяетесь к таблице с именем form