On Apr 30, 2007, at 8:40 AM, ml wrote:

> Hi!
>
> I have 2 relations:   
>  - recipes-categories (M:N)
>  - recipes-flags (M:N)
>
> I'd like to get something like:
> SELECT recipes.title FROM recipes
>   JOIN _recipes_ctgs_recipes
>     ON _recipes_ctgs_recipes.id_recipe = recipes.id
>     JOIN recipes_ctgs
>       ON _recipes_ctgs_recipes.id_recipes_ctg=recipes_ctgs.id
>   JOIN _recipes_flgs_recipes
>     ON _recipes_flgs_recipes.id_recipe = recipes.id
>     JOIN recipes_flgs
>       ON _recipes_flgs_recipes.id_recipes_flg=recipes_flgs.id
>   WHERE recipes_ctgs.title='cat1' AND recipes_flgs.title='flag1'
>
> when I run
> sess.query(Recipe).join("ctgs").join("flgs").select(...)
> it fails with
>
> sqlalchemy.exceptions.SQLError: (ProgrammingError) table name
> "_recipes_ctgs_recipes" specified more than once
>
> where "_recipes_ctgs_recipes" is a secondary table. Full example  
> attached.

well, yeah, youre joining against the same relationship twice.    
going from "ctgs" to "flgs" makes it essentially a self referential  
join on "recipes".  i dont understand what youre trying to query for  
there but my intuition tells me theres probably some better way to  
lay out that query without 5 joins in between.  if not, youll have to  
lay out the self referential part manually using table aliases.

(note to SA old schoolers - see why i hesitated so much to add auto- 
joins across relationships ? every new feature spawns a whole new  
class of user issues)



--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to