我得到一个SQL语句 - 对我来说不能解释 - 奇怪的行为。 也许你会发现什么是错的:Oracle声明不能正确计数
当我使用
select count(*) from department
我得到2755个结果
使用下面的语句
select
building1.street, building1.streetno, building1.plz, building1.city, dept1.buildingid
from
department dept1
left join
supporter sup
on
dept.supporterid = sup.id
left join
building building1
on
sup.buildingid = building1.ibuildingid
where
dept.usepostaladresssupporter = 1
union all
select
building2.street, building2.streetno, building2.plz, building2.city, dept2.buildingid
from
building building2
right join
tueks_department dept2
on
dept2.buildingid = building2.ibuildingid
where
dept2.usepostaladresssupporter = 0
我得到了2755分的结果也声明。 但是,当我想结合这两种说法与左连接:
select count(*) from department
left join
(
select
building1.street, building1.streetno, building1.plz, building1.city, dept1.buildingid
from
department dept1
left join
supporter sup
on
dept.supporterid = sup.id
left join
building building1
on
sup.buildingid = building1.ibuildingid
where
dept.usepostaladresssupporter = 1
union all
select
building2.street, building2.streetno, building2.plz, building2.city, dept2.buildingid
from
building building2
right join
tueks_department dept2
on
dept2.buildingid = building2.ibuildingid
where
dept2.usepostaladresssupporter = 0
) postadress
on
department.buildingid = postadress.buildingid;
我得到了3648513个结果。
我的期望是,我只得到2755结果。 错误在哪里?
感谢您的帮助!
该死的,我的第3次后大脑失去了联系加盟。什么是“不计数”选择内部选择给你(行计数说)...并且是建筑物唯一? – Najzero
嗨Najzero,是的,我知道,这个说法有点复杂。如果我计算内部选择,我得到了2755结果(与工会所有)。 buildingid在构建表中是唯一的 – Tom
Buildingid不是您正在组合的两个查询中行的唯一标识,因此您将获得@LievenKeersmaekers描述的复制效果 – GTG