The following code:

    fields = [db.rjoernaal.so, db.rpublisher.pu, db.rpublisher.pi]
    query = ((db.rjoernaal.uuid == db.rpub_rj.rj_id) &
             (db.rpub_rj.rpub_id == db.rpublisher.id))
  
    data = SQLTABLE(db(query).select(db.rjoernaal.so, db.rpublisher.pu, db.
rpublisher.pi,
                                 groupby = db.rjoernaal.so | db.rpublisher.pu 
| db.rpublisher.pi))

produces the following SQL

SELECT  rjoernaal.so, rpublisher.pu, rpublisher.pi 
FROM rpublisher, rpub_rj, rjoernaal 
WHERE ((rjoernaal.uuid = rpub_rj.rj_id) AND (rpub_rj.rpub_id = rpublisher.id
)) 
GROUP BY rjoernaal.so, rpublisher.pu, rpublisher.pi;

which is correct.

But when I replace the 'data = ' section in the above code to use 


    data = SQLFORM.grid(query,
                        fields = fields,
                        maxtextlength=120,
                        editable = False,
                        deletable = False,
                        groupby = db.rjoernaal.so | db.rpublisher.pu | db.
rpublisher.pi)



The result is:

SELECT  rjoernaal.so, rpublisher.pu, rpublisher.pi, rpublisher.id 
FROM rpublisher, rpub_rj, rjoernaal 
WHERE ((rjoernaal.uuid = rpub_rj.rj_id) AND (rpub_rj.rpub_id = rpublisher.id
)) 
GROUP BY rjoernaal.so, rpublisher.pu, rpublisher.pi;

Note the addition of 'rpublisher.id'.  

This screws up the effect of the groupby-clause and produces an invalid 
query on postgresql.

Regards
Johann



-- 



Reply via email to