0

Ireport 4.5 を使用してレポートを作成しましたが、複数の UNION と JOINS が原因で、レポートの実行が非常に遅いと思います。

テスト目的で簡単なクエリをコピーしています:-

   SELECT b.Project_Id,
       b.Project_Manager,
       b.project_title,
       b.Project_location,
       b.Project_Level,
      SUM(COALESCE(b.Project_Budget, 0)) Projected,
      SUM(COALESCE(c.Accounting, 0)) Actual
   FROM t_authorized_budget a, t_project_c b,t_project_allocation c
   WHERE a.Project_Id = b.Project_Id and b.project_id=c.`Key` 
        and a.Project_Id = c.`Key`
        and $X{IN,b.project_location,p_project_location}
        and $X{IN,b.project_manager,p_project_manager}
        and $X{IN,b.project_id,p_project_id};

したがって、このクエリを使用してプロシージャ CALL GetAllcompo() を作成しましたが、使用しませんでした

        $X{IN,b.project_location,p_project_location}
        and $X{IN,b.project_manager,p_project_manager}
        and $X{IN,b.project_id,p_project_id};

今、Ireport からの呼び出し中にこれらの条件をプロシージャに追加しようとしています。どうやってやるの?

4

1 に答える 1

0

手順を使用する必要がありますか?これを行うには、別のパラメーターを追加します。まず、使用しているWHERE句のタイプを定義するようにユーザーに促します。

$P{PROJECT_PROMPT}

次に、WHERE句を定義するデフォルトの式を使用して2番目のパラメーター($ P {PROJECT_SQL_DEF})を作成します。

 $P{PROJECT_PROMPT} == 'SHORT' ? 
      " ' a.Project_Id = b.Project_Id 
      and b.project_id=c.Key 
      and a.Project_Id = c.Key '" : 

      " ' a.Project_Id = b.Project_Id and b.project_id=c.`Key` 
      and a.Project_Id = c.`Key`
      and $X{IN,b.project_location,p_project_location}
      and $X{IN,b.project_manager,p_project_manager}
      and $X{IN,b.project_id,p_project_id} ' " 

クエリで:

 SELECT b.Project_Id,
   b.Project_Manager,
   b.project_title,
   b.Project_location,
   b.Project_Level,
  SUM(COALESCE(b.Project_Budget, 0)) Projected,
  SUM(COALESCE(c.Accounting, 0)) Actual
FROM t_authorized_budget a, t_project_c b,t_project_allocation c
WHERE $P!{PROJECT_SQL_DEF}
于 2013-02-04T14:18:12.947 に答える