0

我有一个原始 SQL 查询,我想将其转换为 Web2py DAL 查询。可能吗?翻译可以使效率更低吗?

表是:

t_proyecto ( f_nombre, ...)
t_informe  ( f_proyecto [reference to t_proyecto], ....)
t_gasto    ( f_nombre, f_monto, f_informe [reference to t_informe])

这个想法是一个项目(t_proyecto)有很多报告(t_informe),每个报告可以声明/有很多费用(t_gasto)。我想知道每个项目的总费用。

此 SQL 工作正常,但我想知道相应的 DAL 表达式:

result=db.executesql('SELECT f_nombre, SUM(f_monto)
                      FROM t_proyecto,
                           (SELECT f_proyecto, f_monto 
                            FROM t_informe, t_gasto 
                            WHERE t_gasto.f_informe==t_informe.id) as AuxTable

                      WHERE  t_proyecto.id==AuxTable.f_proyecto 
                      GROUP BY t_proyecto.f_nombre;')

我尝试了几件事,但似乎都没有奏效,最后我写了这个原始 SQL。任何帮助解决它并理解逻辑将不胜感激

谢谢!

4

1 回答 1

1

我不认为你可以加入表和子查询,但这应该给出相同的结果

SELECT f_nombre, SUM(f_monto)
FROM t_proyecto, t_informe, t_gasto 
WHERE t_gasto.f_informe==t_informe.id
AND t_proyecto.id==t_informe.f_proyecto 
GROUP BY t_proyecto.f_nombre;

DAL 查询:

db((db.t_proyecto.id==db.t_informe.f_proyecto) &
   (db.t_informe.id==db.t_gasto.f_informe)).select(db.t_gasto.f_monto.sum(), db.t_proyecto.f_nombre, groupby=db.t_proyecto.f_nombre)
于 2013-07-19T15:31:41.917 回答