我有那个sql
:
SELECT DISTINCT
count(KTT)
FROM
TRA.EVENT;
它返回给我的号码是 1901335。
现在我想使用 join
扩展 sql,如下所示:
SELECT DISTINCT
count(E.KTT)
FROM
TRA.EVENT E
LEFT JOIN TRA.TMP_BNAME TBN ON E.KTT = TBN.KTT_DEF;
但这里我得到的结果是 1942376。
我不明白为什么?我还期望结果为 1901335。我认为我可以根据 EVENT
的条目轻松加入
来自 TBN
的值?
编辑
SELECT DISTINCT
E.KTT,
TB.B_BEZEICHNER
FROM
TRA.EVENT E
LEFT JOIN TRA.TMP_BNAME TBN ON E.KTT = TBN.KTT_DEF
LEFT JOIN TRA.TMP_B TB ON TBN.B_ID = TB.B_ID;
我做错了什么?
感谢您的帮助。 斯特凡
最佳答案
您尚未提供完整的详细信息,因此请将这些评论视为一般评论。
当您连接 2 个表时,可能会从一个表创建“重复”行。在您的实例中,TRA.TMP_BNAME
表中可能有超过 1 条记录具有相同的 KTT_DEF
。当您将其连接到 TRA.EVENT
表时,它会为 TRA.EVENT
表中的每条原始记录创建多个记录。
您可以选择从 TRA.EVENT
中计算 KTT
的不同值并使用 DISTINCT
关键字,但您需要将其放入COUNT
:选择计数(DISTINCT E.KTT)
。只要您的值(value)观实际上是独一无二的,这就会起作用。如果不是,计数将与第一个查询不同。
关于sql - 连接的不同计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741760/