your
select is:
select * from drink where drink.drink_key not in (
select drink_key from ingredients_alcohol where alcohol_key not in (
select alcohol_key from alcohol where alcohol_type_key in (
select alcohol_type_key from alcohol where alcohol_key in (3, 2, 5)
)
) union select drink_key from ingredients_mixer where mixer_key not in (
select mixer_key from mixer where mixer_type_key in (
select mixer_type_key from mixer where mixer_key in (2, 4, 6)
)
) union select drink_key from ingredients_garnish where garnish_key not in
(1, 2, 5))
There is no union in web2py but you can do:
db(~db.drink.drink_key.belongs("""
select drink_key from ingredients_alcohol where alcohol_key not in (
select alcohol_key from alcohol where alcohol_type_key in (
select alcohol_type_key from alcohol where alcohol_key in (3, 2, 5)
)
) union select drink_key from ingredients_mixer where mixer_key not in (
select mixer_key from mixer where mixer_type_key in (
select mixer_type_key from mixer where mixer_key in (2, 4, 6)
)
) union select drink_key from ingredients_garnish where garnish_key not in
(1, 2, 5)""")).select()
The union could be done at the web2py level but you would have to break tho
into 4 selects.
Anyway, union selects are slow. You may want to consider using a single
table "ingredients" and have a type.
On Monday, 11 June 2012 12:49:50 UTC-5, Amber Doctor wrote:
>
> I'm trying to translate the below sql statement into web2py but I'm not
> sure how to handle the union. Maybe I'm just not seeing the web2py union
> command that would make translating this simple.
>
> Anyone have any suggestions?
>
> select * from drink where drink.drink_key not in (select drink_key from
> ingredients_alcohol where alcohol_key not in (select alcohol_key from
> alcohol where alcohol_type_key in (select alcohol_type_key from alcohol
> where alcohol_key in (3, 2, 5))) union select drink_key from
> ingredients_mixer where mixer_key not in (select mixer_key from mixer where
> mixer_type_key in (select mixer_type_key from mixer where mixer_key in (2,
> 4, 6))) union select drink_key from ingredients_garnish where garnish_key
> not in (1, 2, 5))
>
>
> Thanks,
> Amber
>
>