2015-02-11 248 views
0

我已经在其他问题中进行了搜索,但我并没有真正知道如何得到正确的数量,而不是笛卡尔的产品。笛卡尔积SQL

我有如下表:

EGAIT6 EGACAM  EGVONO ACC 
2477717 -1443,87 41300015 2995 
2477717 -2424,75 41300021 2995 
2477717 -26630,16 41300022 2995 
2477717 22652,96 41563318 2995 
2477717 14513,12 41566334 2995 
2477717 7703,08 41566335 2995 
2477717 1443,87 41566336 2995 
2477717 2482,70 41566338 2995 
2477717 1124,84 41566339 2995 
2477717 4610,99 41566337 2995 
2477717 393,45 41571055 2995 
2477717 393,45 41571056 2995 
2477717 344,04 41574437 2995 
2477717 344,04 41574438 2995 
2477717 344,04 41584940 2995 
2477717 344,04 41584941 2995 
2477717 225,70 41689722 2995 
2477717 1814,75 41726904 2995 
2477717 1814,75 41726905 2995 

这是我的查询:

select 
    a.egait6, 
    sum(a.egacam), 
    a.egvono, 
    max(a.egvtxt), 
    max(a.egacdt) 
from m3prd.fgledg a 
inner join m3prd.fgledg b 
    on a.egait6 = b.egait6 
where a.egcono=001 
    and a.egdivi='012' 
    and a.egait1='2995' 
    and a.egait6='2477717' 
group by a.egait6, a.egvono 
having sum(a.egacam)<>0 

我得到以下结果:

EGAIT6  EGACAM EGVONO 
2477717 6 880,80 41574437 
2477717 49 654,00 41566338 
2477717 6 880,80 41584940 
2477717 290 262,40 41566334 
2477717 36 295,00 41726905 
2477717 92 219,80 41566337 
2477717 -532 603,20 41300022 
2477717 154 061,60 41566335 
2477717 7 869,00 41571056 
2477717 6 880,80 41574438 
2477717 22 496,80 41566339 
2477717 36 295,00 41726904 
2477717 -48 495,00 41300021 
2477717 4 514,00 41689722 
2477717 453 059,20 41563318 
2477717 6 880,80 41584941 
2477717 -28 877,40 41300015 
2477717 7 869,00 41571055 
2477717 28 877,40 41566336 

如何让我的查询返回根据我的表,正确的数量,而不是笛卡尔产品?

正确的量,以量的预期值是:

EGACAM 
- 1 443,87 
- 2 424,75 
- 26 630,16 
22 652,96 
14 513,12 
7 703,08 
1 443,87 
2 482,70 
1 124,84 
4 610,99 
393,45 
393,45 
344,04 
344,04 
344,04 
344,04 
225,70 
1 814,75 
1 814,75 

我mamking自连接的因为...真正的表,我在寻找具有两个EGAIT6和EGVONO更多不同的值。所以我不能删除查询的那部分。我只想知道如何避免获得笛卡尔产品。

+1

金额是多少,你期待得到什么? – 2015-02-11 15:08:20

+0

究竟是什么“正确的金额”?你不仅没有明确地说出这些,你的字段名称也很难推断这一点。 – pyon 2015-02-11 15:10:33

+0

您正在使用“两个”表中完全相同的字段自行加入表。为什么不这样做呢? – 2015-02-11 15:12:32

回答

-1

删除这些行:

inner join m3prd.fgledg b 
on a.egait6 = b.egait6 

我看不出制作在同一个表的连接任何使用....