On Jul 8, 2010, at 3:28 PM, Mike Lewis wrote: > That's a fair point. > > I think one interface might be casting a FromClause into a WithClause > similar to how one would alias something. > > With postgres it seams like when going from a WITH to WITH recursive > is adding a UNION ALL and the recursive term. Throwing out an idea for > an interface (for postgres at least): > > Say you want to make > > WITH RECURSIVE included_parts(sub_part, part, quantity) AS ( > SELECT sub_part, part, quantity FROM parts WHERE part = > 'our_product' > UNION ALL > SELECT p.sub_part, p.part, p.quantity > FROM included_parts pr, parts p > WHERE p.part = pr.sub_part > ) > > > First: > > included_parts = with_([parts.c.subpart, parts.c.part, > parts.c.quantity], whereclause=parts.c.part=='our_product') # could > also cast a SelectClause (or maybe even selectable) to a with_ by > using selectable.with_() > > included_parts would compile to "WITH include_parts AS (SELECT > sub_part, part, quantity FROM parts WHERE part = 'our_product')" > > then we do: > > included_parts = base.recursive( > [included_parts.c.sub_part, included_parts.c.part, > included_parts.c.quantity], > whereclause=included_parts.c.part==parts.c.part, > all=True) > > Which would compile to the desired with clause. > > > then a select(included_parts.c.part) would give you: > > WITH RECURSIVE included_parts(sub_part, part, quantity) AS ( > SELECT sub_part, part, quantity FROM parts WHERE part = > 'our_product' > UNION ALL > SELECT p.sub_part, p.part, p.quantity > FROM included_parts pr, parts p > WHERE p.part = pr.sub_part > ) > SELECT included_parts.part, > > > > Where can I find information on the Oracle syntax and other ones you'd > like to support?
Oracle seems to be beginning to have WITH support: http://www.dba-oracle.com/t_with_clause.htm but their recursive functionality is CONNECT BY: http://www.dba-oracle.com/t_sql_patterns_recursive.htm I used "connect by" just a little bit years ago, and thats as much as I've gotten my head around recursive queries. I havent yet taken the time to work up a modernized mental picture of them. > > On Jul 8, 11:46 am, Michael Bayer <mike...@zzzcomputing.com> wrote: >> I'd really be interested in defining a system that covers WITH / RECURSIVE >> entirely, and makes sense both with PG / SQL server as well as Oracle. >> The work here is figuring out what is common about those two approaches and >> what an API that is meaningful for both would look like. Implementation >> and tests are just the grunt work here. >> >> On Jul 8, 2010, at 2:03 PM, Mike Lewis wrote: >> >> >> >>> I'd be interested in prototyping a WithClause or something similar if >>> you think it might be useful. >> >>> I imagine it would have similar semantics to a FromClause but would be >>> prepended to the query. Currently, I'm not too interested in >>> prototyping the RECURSIVE part and only care about Postgres. >> >>> For me to implement this would it be possible to do this in a non- >>> intrusive manner (outside of modifying core SA code?) I'd guess it >>> would have similar semantics to how select() will automatically >>> include FromClauses that for columns that reference them. >> >>> Also, it would probably chain the WITHs automatically too. >> >>> Any thoughts? >> >>> Thanks, >>> Mike >> >>> On Jul 6, 4:31 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: >>>> this is the current status of that: >> >>>> http://groups.google.com/group/sqlalchemy/browse_thread/thread/c20a4f... >> >>>> WITHand OVER seem to be the upcoming things we'll have to work on (PG, >>>> MSSQL, DB2 supportWITH). Oracle makesWITHdifficult. Its also getting >>>> to be time to do a DB2 dialect. >> >>>> On Jul 6, 2010, at 7:07 PM, Mike Lewis wrote: >> >>>>> Does SA support this syntax? >> >>>>> http://www.postgresql.org/docs/9.0/static/queries-with.html >> >>>>> Thanks, >>>>> Mike >> >>>>> -- >>>>> You received this message because you are subscribed to the Google Groups >>>>> "sqlalchemy" group. >>>>> To post to this group, send email to sqlalch...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>> For more options, visit this group >>>>> athttp://groups.google.com/group/sqlalchemy?hl=en. >> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to sqlalch...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> For more options, visit this group >>> athttp://groups.google.com/group/sqlalchemy?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.