我有父表和子表。这是一对多的关系:父母可以有很多孩子,孩子只能有一个孩子。
我试图在SQLAlchemy中创建一个查询,它会给我所有的父母'数据,加上他们的孩子数。
到目前为止,我有这个:
db.session.query(func.count(models.Child.id), models.Parent)\
.select_from(models.Parent).join(models.Child).group_by(models.Parent.id)
这将生成如下SQL:
SELECT count(child.id) AS count_1, parent.id AS parent_id, parent.name AS parent_name
FROM parent
INNER JOIN child ON parent.id = child.parent_id
这给了我想要的结果,,除非父母没有孩子。然后从结果中完全省略该父项,而期望的结果是具有其id,name和0计数的行。
答案 0 :(得分:1)
这称为外连接。
在SQLAlchemy中,使用outerjoin
方法代替join
,您将获得所需的结果。