Hi

I'm having a problem with a query where the FROM clause doesn't
include a table that is actually required for the query.

Here's my code:

----------
subq = subquery(None,
                        columns=[communes.c.nom.label("commune")],

whereclause=and_(fiches_aggregees.c.id_zonage== zonages.c.gid,
                                                    zonages.c.gid
==croisements.c.gid_zonage,

croisements.c.gid_commune == communes.c.gid),
                        distinct=True)

query = select([suq.c.commune,
                      func.count('*').label('nbfiches')),

func.sum(fiches_aggregees.c.nbtaxons).label('nbtaxons')].group_by(subq.c.commune)

meta.Session.execute(query).fetchall()
----------

Here's the query as seen in the postgres logs:

----------
SELECT anon_1.commune, count(E'*') AS nbfiches,
sum(fiches_agregees.nbtaxons) AS nbtaxons
FROM
   (SELECT DISTINCT communes.nom AS commune
    FROM communes, zonages, croisements
    WHERE fiches_agregees.id_zonage = zonages.gid
    AND zonages.gid = croisements.gid_zonage
    AND croisements.gid_commune = communes.gid) AS anon_1,
   fiches_agregees
GROUP BY anon_1.commune
----------

The query fails because the "fiches_agregees" table isn't in the FROM
clause of the subquery. I can't figure out why it's not, given there's
a reference to it in the WHERE clause.

I tried to explicity add the table using the "from_obj" parameter:

----------
subq = subquery(None,
                         columns=[communes.c.nom.label("commune")],

whereclause=and_(fiches_aggregees.c.id_zonage== zonages.c.gid,
                                                     zonages.c.gid
==croisements.c.gid_zonage,

croisements.c.gid_commune == communes.c.gid),
                         from_obj=[fiches_aggregees],
                         distinct=True)
----------

but that doesn't work either (same query is generated).

What can make this table not appear in the FROM clause? I haven't been
able to figure it out.

Thanks a lot for any response,

-- 
Eric Lemoine

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 96
Mail : eric.lemo...@camptocamp.com
http://www.camptocamp.com
-- 
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.


Reply via email to