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,现在当我在下表中添加时,答案是 6356540,正好是原来答案的 20 倍。“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 行,其中一列是 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 和 player_source 表中。

4

2 回答 2

0

它似乎是交叉连接两个表,因此你得到了这个结果

于 2012-09-09T18:15:48.323 回答
0

如果连接查询中的两个表(来自 Player P,在您的情况下为 Feature_group_xref X)没有连接条件,则 RDBMS 返回它们的笛卡尔积。这意味着一个表的每一行都与另一个表的每一行相结合。例如,如果一个表有 3 行,而另一个表有 3 行,那么如果你在没有连接条件的情况下连接这两个表,你将得到 9 行。

于 2012-09-09T18:10:35.260 回答