http://web2py.com/books/default/chapter/29/6#belongs

belongs take a set or a  _select() - mind the _ in front of the select - : 
you're using it in the wrong way :D

db(db.movies.id.belongs(
     db(db.ratings.id>0)._select(db.ratings.imovie)
)).select(db.movies.ALL)

should work. If not, please post your model too...

On Sunday, June 24, 2012 6:39:56 AM UTC+2, Vincenzo Ampolo wrote:
>
> Hi I'm trying do make a query: 
>
> I want to get all the movies that have ratings on my database. 
> db.ratings is a many to many relationship with db.users and db.movies 
>
> I did: 
>
> In [7]: db(db.ratings.imovie.belongs(db.movies))._select(db.movies.ALL) 
> Out[7]: 'SELECT  movies.id, movies.imdb_id FROM ratings, movies WHERE 
> (ratings.imovie IN (movies.id,movies.imdb_id));' 
>
> Which is good but takes too much time. In particular i wanted to 
> restrict the IN clause to movies.id only so i did: 
>
> In [8]: db(db.ratings.imovie.belongs(db.movies.id))._select(db.movies.ALL) 
>
> Out[8]: 'SELECT  movies.id, movies.imdb_id FROM ratings, movies WHERE 
> (1=0);' 
>
> It replaced all the IN with a 1=0 clause. Very odd. 
>
> Is it a bug or am I doing something wrong? 
>
>
> -- 
> Vincenzo Ampolo 
> http://vincenzo-ampolo.net 
> http://goshawknest.wordpress.com 
>
>

-- 



Reply via email to