【问题标题】:join multiple tables but gives me multiple results per line加入多个表,但每行给我多个结果
【发布时间】:2014-01-26 15:34:55
【问题描述】:

嗨,我正在尝试加入多个表,但我的主表包含空值作为外键,所以如果我想要关于我的 artikelen 的所有信息,我必须检查空值。当我执行查询时,我收到了我的信息,但每行显示三遍左右。我不知道为什么

SELECT DISTINCT Artikelen.*, BtwTarieven.*, Eenheden.*, Categorieen.*, Leveranciers.IdLeverancier, Leveranciers.Naam, Leveranciers.Actief
FROM Artikelen 
    JOIN BtwTarieven
        ON (BtwTarieven.IdBtwTarief = Artikelen.IdBtwTarief OR Artikelen.IdBtwTarief IS NULL)
    JOIN Eenheden
        ON (Eenheden.IdEenheid = Artikelen.IdEenheid OR Artikelen.IdEenheid IS NULL)
    JOIN Categorieen
        ON (Categorieen.IdCategorie = Artikelen.IdCategorie OR Artikelen.IdCategorie IS NULL)
    Join Leveranciers
        ON (Leveranciers.IdLeverancier = Artikelen.IdStandaardLeverancier OR Artikelen.IdStandaardLeverancier IS NULL)

【问题讨论】:

  • 显示样本数据和所需结果。显示多行是因为连接会生成所有可能的组合,因此某些表有多行用于您正在查看的数据。

标签: sql sql-server


【解决方案1】:
SELECT DISTINCT Artikelen.*, BtwTarieven.*, Eenheden.*, Categorieen.*, Leveranciers.IdLeverancier, Leveranciers.Naam, Leveranciers.Actief
FROM Artikelen 
LEFT JOIN BtwTarieven
    ON (BtwTarieven.IdBtwTarief = Artikelen.IdBtwTarief )
LEFT JOIN Eenheden
    ON (Eenheden.IdEenheid = Artikelen.IdEenheid )
LEFT JOIN Categorieen
    ON (Categorieen.IdCategorie = Artikelen.IdCategorie )
LEFT JOIN Leveranciers
    ON (Leveranciers.IdLeverancier = Artikelen.IdStandaardLeverancier )

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多