我正在尝试在sqlalchemy中复制此(PostgreSQL)SQL:
SELECT MAX(building.id) FROM building JOIN owner ON building.owner_id = owner.id WHERE owner.name IN ('rita', 'sue', 'bob') GROUP BY version.name;
这将找到每个指定所有者拥有的一栋建筑物(最近的建筑物)(注意:为保护无辜者而进行了更改的数据:我保证,为什么我要在真实环境下这样做)。 / p>
我有点sqlalchemy n00b,我不知道如何在sqlalchemy中做到这一点。这是我目前所拥有的:
subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())
它报告:
ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "owner"
我在这里想念什么?
答案 0 :(得分:0)
知道了!我错过了相当于加入。这段代码有效:
subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner_id==model.Owner.id)
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())