0

結果を吐き出すクエリがあります:

Select Sum(Count(P.Create_Dtime)),
From Player P
Where
Trunc(P.Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd')
And Trunc(P.Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd')
Group By Trunc(P.Create_Dtime)
Order By Trunc(P.create_Dtime) Asc

結果=317827

ここで、このクエリを変更してfromグループに別のテーブルを追加すると(後でこのテーブルに基づいて制約を追加します)...結果は、元の合計よりもはるかに大きい新しい回答を吐き出します。たとえば、元の回答は317827でしたが、下の表に追加すると、元の回答のちょうど20倍の6356540になります。「Feature_group_xref」テーブルには20行のデータがあり、create_dtime列もそのテーブルにあります。これらの値が増加するのはなぜですか?各列を(「P」で)識別したので、問題はないと思いました。助言がありますか?以下に表示されている場合、私が追加したのは新しいテーブル名だけです。

Select Sum(Count(P.Create_Dtime))
From Player P, Feature_group_xref X
Where
Trunc(P.Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd')
And Trunc(P.Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd')
Group By Trunc(P.Create_Dtime)
Order By Trunc(P.create_Dtime) Asc

結果=6356540(テーブル "Feature_Group_Xref"には20行あり、1つの列はcreate_dtimeです。この結果は、最初のクエリの結果のちょうど20倍です。

**更新-2012年3月1日以降に作成されたユーザーについて、過去7日間のアクティブなプレーヤーの合計を表示するこのクエリがあります...

Select
sysdate,sum(Count(p.init_dtime))
From Player p
Where
Trunc(p.Init_Dtime) > Trunc(Sysdate) - 7 
And
Trunc(P.Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd')
And Trunc(P.Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd')
Group By Trunc(P.Init_Dtime)
Order By Trunc(p.Init_Dtime) Asc

このクエリを取得して分解し、表示される(init_dtime)値がgroup_id = 1,10,20,30、および40(グループIDは1〜100)の値のみになるようにします。グループIDはplayer_sourceテーブルにあり、「player_id」列はplayer_sourceテーブルとplayer_sourceテーブルの両方にあります。

4

2 に答える 2

0

結合クエリの2つのテーブル(プレーヤーPから、この場合はFeature_group_xref X)に結合条件がない場合、RDBMSはデカルト積を返します。つまり、あるテーブルの各行が別のテーブルの各行と結合します。たとえば、1つのテーブルに3行があり、別のテーブルに3行がある場合、結合条件なしでこれら2つのテーブルを結合すると、9行になります。

于 2012-09-09T18:10:35.260 に答える
0

両方のテーブルを相互結合しているように見えるため、この結果が得られます

于 2012-09-09T18:15:48.323 に答える