我正在使用SQLAlchemy在SQLite数据库上执行查询。我在做一个四表连接。其中一个表中的一个字段是datetime字段。我能够获得元组的列表,其中包含符合我要查找的条件的所有记录。我想获得的是一个列表,其中包含具有相同日期的记录的总和。因此,如果我有1条记录在某个时间,3条记录都在同一时间,但与第一条记录不同,我会得到列表1,3。
以下是我当前的查询:
rework_records = DB.session.query(ReworkRecord, NonConformanceRecord, Part, Product).join(
NonConformanceRecord, NonConformanceRecord.id == ReworkRecord.nonconformance_id
).join(
Part
).join(
Product
).filter(
Product.id == form.product_family.data).order_by(
desc(NonConformanceRecord.entry_date)
).all()
这将返回元组列表,其中每个条目都包含来自被联接的四个表中的每个表的记录。
发布于 2019-06-11 03:09:02
您只缺少一条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
的表
https://stackoverflow.com/questions/56531661
复制相似问题