Не могу сообразить как сформировать простой запрос.
Есть родитель, у него могут быть дети. Нужно выбрать детей по одному от каждого родителя, ребёнок должен иметь последнюю дату создания. Порядок должен быть отсортирован по убыванию даты создания ребёнка.
Так как запрос используется в пагинации flask-sqlalchemy, то нужно всё это иметь в запросе.
class Parent(Model):
id = Column(Integer, primary_key=True)
created_at = Column(DateTime, default=datetime.utcnow)
chils = relationship(Child, backref="parent")
class Child(Model):
id = Column(Integer, primary_key=True)
created_at = Column(DateTime, default=datetime.utcnow)
parent_id = Column(ForeignKey('parent.id'))
p1 = Parent()
p1.childs.append(
Child()
)
p1.childs.append(
Child()
)
p2 = Parent()
p2.childs.append(
Child()
)
p2.childs.append(
Child()
)
db.session.add(p1)
db.session.add(p2)
query = Child.query
query = query.distinct(Child.parent_id)
query = query.order_by(Child.parent_id.desc(), Child.created_at.desc())
parents = query.all()
Во так выбираются правильно, но порядок не тот который нужен: дата создания ребёнка вразброс:
27.08.2017 14:00
27.08.2017 13:54
27.08.2017 13:55