0

Web2py DAL クエリに変換したい生の SQL クエリがあります。出来ますか?翻訳すると非効率になる?

テーブルは次のとおりです。

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

1 つのプロジェクト (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 に答える