I should have mentioned that - cutoff is simply a float, e.g. query = query.where(query.c.brayCurtis >= 0.8)
that's why I think there is a trivial solution. If I do the above, the whole query will be added as a subquery and the where and order by clauses duplicated. It works fine for the order_by statement though. Is there a recommended strategy for adding (where) clauses to calculated columns? Actually what I do is that: abs(ar1-ar2).sum() / float( abs(ar1+ar2).sum() ) # NumPy notation the corresponding SQL query is quite verbose, that's why I used a column label. On Apr 23, 2:01 pm, Michael Bayer <[EMAIL PROTECTED]> wrote: > On Apr 23, 2008, at 6:55 AM, Adrian wrote: > > > > > > > I guess the solution to my problem is simple, although I did not > > manage to find it. > > > The problem is as follows: I calculate the bray-curtis distance > > between an input and the rows in my table and give the value an alias > > ('brayCurtis'). What I want is to order the resultSet by brayCurtis > > and return only those rows where the value exceeds a given threshold. > > Ordering is pretty simple > > > query = query.order_by(query.c.brayCurtis.desc()) > > > The problem occurs if I want to add an additional where clause like > > this: > > > query = query.where(query.c.brayCurtis >= cutoff) > > > Suddenly the whole statement is duplicated. Maybe there is a more > > concise and elegant solution for this problem. > > Im not sure what "cutoff" is, but if its a SELECT statement, try using > cutoff.as_scalar(). This would solve the issue of extra elements > being added to the FROM clause, if thats whats happening. > > But also, if cutoff is in fact a subquery, and the issue is that a > labeled column from the "columns" clause is not appearing as that > label in the WHERE clause, the subquery needs to be rendered at that > point. SQL doesnt officially allow order by or WHERE criterion based > on labels in the columns clause of the select statement - it will fail > on some databases, so SQLA currently doesn't place labels (i.e. column > AS foobar) anywhere outside the columns clause. A good optimizer > should figure out that the columns clause and WHERE clause are the > same thing. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---