SQL查询正在返回相同字段的多行

SQL查询正在返回相同字段的多行,sql,Sql,下面是我的代码,我试图返回SELECT中所有类别号为4的列。但是当我这样做的时候,我得到了正确的答案,但它却重复了100多次!有人知道为什么会这样吗 SELECT sr.CondoID, cu.LocationNum, sr.EstHours, sr.SpentHours, o.OwnerNum, o.LastName FROM service_request sr, owner o, condo_unit cu WHERE CategoryNum = '4'; 如注释中所述,您会看到结果

下面是我的代码,我试图返回SELECT中所有类别号为4的列。但是当我这样做的时候,我得到了正确的答案,但它却重复了100多次!有人知道为什么会这样吗

SELECT sr.CondoID, cu.LocationNum, sr.EstHours, sr.SpentHours, o.OwnerNum, o.LastName
FROM service_request sr, owner o, condo_unit cu
WHERE CategoryNum = '4';


如注释中所述,您会看到结果,即from子句中所有表行之间的
交叉联接。因此您需要将它们连接起来,以获取表中的相关行

正如我在您的图片中看到的,由于缺少预期的结果,我将只使用简单的
join
(如果您要求,可以更改为
left join
),并将查询编写为

select sr.CondoID, cu.LocationNum, sr.EstHours, sr.SpentHours, o.OwnerNum, o.LastName
  from service_request sr
  join condo_unit cu
    on cu.condoid = sr.condoid
  join owner o
    on o.ownernum = cu.ownernun
 where sr.categoryNum = 4;

另外,从图像中,
categoryNum
没有发送到be-be-character,因此我删除了它周围的
'
。如果它是
varchar
列,则可以将其放回原处。

您当前正在所有3个表之间进行交叉联接,因此结果集的大小较大且出乎意料。如果您想在此处获得有关正确查询的帮助,请包括表结构。我现在已添加了表的照片。请以文本格式提供数据,或至少将其作为问题的一部分,而不是附件。抱歉,我不知道如何复制所有数据-旧样式的逗号分隔表样式已替换为正确的ANSI样式
JOIN
符合ANSI-92 SQL标准(25年前)的语法,不鼓励使用