That did it - thanks a lot Simon
> -----Original Message----- > From: sqlalchemy@googlegroups.com > [mailto:[EMAIL PROTECTED] On Behalf Of Michael Bayer > Sent: 06 March 2007 14:38 > To: sqlalchemy@googlegroups.com > Subject: [sqlalchemy] Re: Table being removed from nested query > > > try putting "correlate=False" in the nested select. > > On Mar 6, 2007, at 6:29 AM, King Simon-NFHD78 wrote: > > > Hi, > > > > I have a problem in which a table is being removed from the FROM > > clause of a nested query. The attached file should show the > problem, > > which I've tested on 0.3.5 and rev 2383. > > > > In the example, there are two tables, department and employee, such > > that one department has many employees. The inner query > joins the two > > tables and returns department IDs: > > > > inner = select([departments.c.department_id], > > employees.c.department_id == > > departments.c.department_id) > > inner = inner.alias('filtered_departments') > > > > The SQL looks like: > > > > SELECT departments.department_id > > FROM departments, employees > > WHERE employees.department_id = departments.department_id > > > > I then join this query back to the department table: > > > > join = inner.join(departments, > > > > onclause=inner.c.department_id==departments.c.department_id) > > > > SQL for the join condition looks like: > > > > (SELECT departments.department_id > > FROM departments, employees > > WHERE employees.department_id = departments.department_id) > > AS filtered_departments > > JOIN departments ON filtered_departments.department_id = > > departments.department_id > > > > This still looks correct to me. However, I then base a query on this > > join: > > > > outer = select([departments.c.name], > > from_obj=[join], > > use_labels=True) > > > > At this point, the 'departments' table is no longer part of > the inner > > query. The SQL looks like: > > > > SELECT departments.name > > FROM (SELECT departments.department_id AS department_id > > FROM employees > > WHERE employees.department_id = departments.department_id) > > AS filtered_departments > > JOIN departments ON filtered_departments.department_id = > > departments.department_id > > > > ...and the query doesn't run. > > > > I think I can work around it by putting the join condition in the > > whereclause of the select, instead of from_obj, but is > there a reason > > why the join version doesn't work? > > > > Thanks, > > > > Simon > > > > > > > <inner_query_test.py> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---