1

Crystal Reports Developer Studio を使用して、2 つの異なるテーブルについてレポートするレポートを作成しています。それらを「ATable」と「BTable」にします。最も単純なタスクとして、Total Running Fields を使用して各テーブルの数を報告したいと思います。ATable 用に作成したもの (ATableTRF と呼ばれる) をレポートに投稿すると、次のようになります。

1) SQL クエリ (SQL クエリの表示) は次を示します。

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

2) 読み取られたレコードの合計は、ATable 内のレコードの数です。

3) 取得した数値は正しいです (ATable の合計レコード)。

BTableTRF についても同様です。ATableTRF を削除すると、次のようになります。

1) SQL クエリ (SQL クエリの表示) は次を示します。

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

2) 読み取られたレコードの合計は、BTable 内のレコードの数です。

3) 取得した数値は正しいです (BTable の合計レコード)。

問題は、レポートに両方のフィールドを配置したときに始まります。次に、2 つのクエリを次々に取得します (テーブルは Crystal レポートでリンクされていないため)。

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

そして、読み取られたレコードの数は、各テーブルよりもはるかに多く、止まりません。それがcount(ATable)xcount(BTable)であることを確認しますが、それは私のコンピューターの制限を超えます(おそらく-1つは約30万行、もう1つは約90万行です)。

2 つのテーブルの数を報告したいと思います。相互作用は必要ありませんが、クリスタルは何らかの方法で相互作用を強制します。

誰でもそれを手伝ってもらえますか?

ありがとう!

4

2 に答える 2

1

2 つのテーブルの関係を表す何らかの結合がない限り、結果はデカルト積になります。行数を取得するには、SQL コマンドを介して、または個々の SQL 式として 2 つのサブクエリを使用してみてください。元:

select count(distinct ATABLE_KEY) from ATABLE

行数以外にこれらのテーブルに関心がない場合は、これらすべての行を Crystal に取り込む理由はありません。RDBMS で手間のかかる作業を行う方がよいでしょう。

于 2012-01-31T14:12:02.897 に答える
0

2 つのクエリを UNION することができます。これにより、各クエリの行を 1 回含む 1 つのレコード セットが得られます。

于 2012-08-09T13:52:41.763 に答える