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