加入时,SQL Count会发疯

时间:2013-08-21 17:12:14

标签: sql oracle count

所以我有以下SQL语句:

SELECT   COUNT("Oprettet af Initialer") AS meetings_booked
FROM     KS_DRIFT.DIAN_POT_OPR
WHERE    "Oprettet dato" = '2013-08-12'
AND      "Oprettet af Initialer" = 'JOEB'

现在返回正确的数字(71)

现在这只是一个测试,我必须对整个表做同样的事情,但只包含一些Oprettet af Initialer等于另一个表中的行Initialer的部分。

为此,我决定使用连接:

SELECT   COUNT("Oprettet af Initialer") AS meetings_booked
FROM     KS_DRIFT.DIAN_POT_OPR INNER JOIN KS_DRIFT.V_TEAM_DATO ON KS_DRIFT.DIAN_POT_OPR."Oprettet af Initialer" = KS_DRIFT.V_TEAM_DATO.INITIALER
WHERE    "Oprettet dato" = '2013-08-12'
AND      "Oprettet af Initialer" = 'JOEB'

当我运行这个时,我得到以下输出:181476。

这显然是个错误!

现在我有一种直觉,告诉我它正在计算两行中的所有内容,但我不知道如何修复它?

1 个答案:

答案 0 :(得分:3)

问题是V_TEAM_DATO中有几行与KS_DRIFT.DIAN_POT_OPR匹配, 试试这个:

SELECT   COUNT("Oprettet af Initialer") AS meetings_booked
FROM     KS_DRIFT.DIAN_POT_OPR 
WHERE exists
(SELECT 1 FROM KS_DRIFT.V_TEAM_DATO 
WHERE KS_DRIFT.DIAN_POT_OPR."Oprettet af Initialer" = KS_DRIFT.V_TEAM_DATO.INITIALER
)
AND "Oprettet dato" = '2013-08-12'
AND "Oprettet af Initialer" = 'JOEB'