我仍然在处理这个查询,它正在运行,但没有返回我需要的数据。
SELECT prod.Code,
prod.Description,
prod.Groupp,
prod.Quantity,
prod.Unit,
prod.Standard,
prod.Type,
prod.Model,
prod.GroupBKM,
prod.Note,
comp.Unit,
comp.Cost
FROM dbo.Product1 prod
INNER JOIN dbo.Components comp
ON comp.Code = prod.Code
以上查询仅在comp.code = prod.code存在的情况下返回数据,而我想获取数据prod。*在任何情况下显然数据相关comp.cost,如果不存在,将是空的。 我做不到!任何帮助将不胜感激。
答案 0 :(得分:3)
将INNER JOIN
替换为LEFT JOIN
SELECT prod.Code,
prod.Description,
prod.Groupp,
prod.Quantity,
prod.Unit,
prod.Standard,
prod.Type,
prod.Model,
prod.GroupBKM,
prod.Note,
comp.Unit,
comp.Cost
FROM dbo.Product1 prod
LEFT JOIN dbo.Components comp
ON comp.Code = prod.Code
答案 1 :(得分:2)
根据定义,您无法使用INNER JOIN
执行此操作,因为INNER JOIN
被定义为仅返回找到匹配项的项目。
如果您想要返回基本SELECT
中的行,即使JOIN
谓词失败,那么您需要一个LEFT OUTER JOIN
...,其定义正是如此。
答案 2 :(得分:1)
来自维基百科:
外连接不需要两个连接表中的每个记录 有匹配的记录。连接表保留每条记录 - 即使 没有其他匹配记录。外连接进一步细分为 左外连接,右外连接和全外连接,取决于 保留表的行(左,右或两者)。
在您的情况下,请将INNER JOIN
替换为LEFT OUTER JOIN
。