Estoy intentando que mi subconsulta de popular_query elimine a duca Place.id, pero no la elimina. Este es el código a continuación. Intenté usar distinct pero no respeta la regla order_by.¿Cómo puedo consultar filas con valores únicos en una columna unida?
SimilarPost = aliased(Post)
SimilarPostOption = aliased(PostOption)
popular_query = (db.session.query(Post, func.count(SimilarPost.id)).
join(Place, Place.id == Post.place_id).
join(PostOption, PostOption.post_id == Post.id).
outerjoin(SimilarPostOption, PostOption.val == SimilarPostOption.val).
join(SimilarPost,SimilarPost.id == SimilarPostOption.post_id).
filter(Place.id == Post.place_id).
filter(self.radius_cond()).
group_by(Post.id).
group_by(Place.id).
order_by(desc(func.count(SimilarPost.id))).
order_by(desc(Post.timestamp))
).subquery().select()
all_posts = db.session.query(Post).select_from(filter.pick()).all()
hice una impresión de prueba con
print [x.place.name for x in all_posts]
[u'placeB', u'placeB', u'placeB', u'placeC', u'placeC', u'placeA']
¿Cómo puedo solucionar este problema?
Gracias!
¿Respeta el orden si elimina la cláusula 'group_by (Place.id)' y agrega 'distinct (Place.id)' en su lugar? Creo que el 'group_by' no sería necesario si usas' distinct'. – Nicholas
¿'' self.radius_cond() 'y' filter.pick() 'cosas que ha definido en otro lugar? No veo nada que realmente haga uso de 'popular_query'. –