0

以下の3つのテーブルがあり、UserIDフィールドでテーブル1からテーブル2へ、およびテーブル1からテーブル3への結合を作成するとします。1つはテーブル2データ、もう1つはテーブル3データの2つの詳細セクションを作成すると、crystalはテーブル2と3のデカルト積を実行しているかのように8行の結果を生成します。4行を出力するだけであると期待していました。解決策はサブレポートを使用することですが、なぜこれを行うのでしょうか。

表1

UserID Name
1      'John Smith'

表2

GameID UserID Score
1      1      50
2      1      60

表3

CarID  UserID  Make
1      1       Acura
2      1       Tata
4

3 に答える 3

0

詳細セクションごとに1つのサブレポートを使用し、各サブレポートで次の2つのクエリを使用できます。

[Table 1] .userID = [Table 2] .USERIDで、USERID、Name、Score、Make FROM[Table1]内部結合[Table2]を選択します。

[Table 1] .userID = [Table 3] .USERIDで、USERID、Name、Make FROM innerjoin[Table3]を選択します。

于 2012-09-24T05:20:41.913 に答える
0

You get four rows based on how you have joined the tables (2 rows from [Table 2] X 2 rows from [Table 3])

You get four more rows because you have two 'Details' sections.

Games and Cars have no logical relationship, so you should move one of those tables to a correlated sub-report.

于 2012-09-24T11:54:24.873 に答える
0

他の2つのテーブル(ゲーム、車)が無関係であるため、Crystalはこれを行います。useridフィールドは、情報を求める要求を各テーブルに送信します。次に、両方のテーブルが情報をテーブルに送り返し、クリスタルは取得された情報を表示します。max(carid)やmax(gameid)などの基準をレポートに追加すると、両方に対して1つの回答が得られます。また、max(carid)だけを試して、すべてのgameidを取得できるかどうかを確認することもできます(これは状況によって異なります)結合の作成方法について)

于 2012-09-25T11:26:19.763 に答える