【问题标题】:web2py DAL complex queryweb2py DAL 复杂查询
【发布时间】:2013-07-17 14:32:42
【问题描述】:

我有一个原始 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。任何帮助解决它并理解逻辑将不胜感激

谢谢!

【问题讨论】:

    标签: python web2py


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 2012-02-22
      • 2012-05-12
      • 1970-01-01
      • 2015-08-27
      • 2014-05-06
      • 2011-01-09
      • 2014-09-02
      • 2013-10-03
      相关资源
      最近更新 更多