SQL Server查询返回太多记录

时间:2013-03-13 15:34:27

标签: sql sql-server database sql-server-2008

我的SQL Server数据库中有3个表。

它们如图所示链接在一起(线条连接到图片中的右侧行)

ER Model

我有一个查询应该返回tblreparations的所有赔偿,其中包含有关修复内容的一些信息,但是它会返回3次修复,一次是每台笔记本电脑,客户端(荷兰语)分配给它,而赔偿表(荷兰语的修理)每行只包含一个laptopID

这是查询:

SELECT AankopenReparaties.Id, 
       AankopenReparaties.KlantenId, 
       AankopenReparaties.actietype, 
       AankopenReparaties.voorwerptype, 
       laptopscomputers.merk, 
       laptopscomputers.model, 
       laptopscomputers.info, 
       AankopenReparaties.info, 
       AankopenReparaties.Prijs, 
       AankopenReparaties.lopend 
FROM AankopenReparaties, laptopscomputers 
WHERE (aankopenreparaties.lopend = 'lopend');

它返回此

Query results

它应该只有一行,因为赔偿表(aankopenreparaties)只包含一行laptopID

有谁知道如何解决这个问题?

请帮助,因为它应尽快修复(这是学校的作业)

1 个答案:

答案 0 :(得分:6)

您返回太多记录的原因是您的查询生成两个表的笛卡尔积。您需要告诉服务器这两个表是如何相互关联的。

SELECT  AankopenReparaties.Id,
        AankopenReparaties.KlantenId,
        AankopenReparaties.actietype,
        AankopenReparaties.voorwerptype,
        laptopscomputers.merk,
        laptopscomputers.model,
        laptopscomputers.info,
        AankopenReparaties.info,
        AankopenReparaties.Prijs,
        AankopenReparaties.lopend
FROM    AankopenReparaties
        INNER JOIN laptopscomputers
            ON AankopenReparaties.LaptopID = laptopscomputers.ID -- specify relationship
WHERE   aankopenreparaties.lopend = 'lopend'

要进一步了解联接,请访问以下链接: