1

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

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

ER模型

我有一个查询,它应该返回所有的赔偿,tblreparations其中包含一些关于修复的信息,但它返回赔偿 3 次,对于客户(荷兰语中的 klant)分配给它的每台笔记本电脑一次,而赔偿表(荷兰语中的赔偿)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');

它返回这个

查询结果

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

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

请帮忙,因为它应该很快就会修复(这是学校的作业)

4

1 回答 1

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'

要进一步了解有关联接的更多信息,请访问以下链接:


于 2013-03-13T15:36:04.850 回答