C# MSSQL查询不返回空列/结果

C# MSSQL查询不返回空列/结果,c#,sql,sql-server,inner-join,C#,Sql,Sql Server,Inner Join,我对SQL查询有点陌生,所以这可能很容易修复,但我似乎找不到任何答案 我有一大堆相关的表格。例如。 SPClient包含iClientID和sName,SPDocTypes包含iDocTypeID和sName,SPCreditor包含iCreditorID和sName 然后 SPDocIndex包含iIndexID,然后是上面列出的iClientID、iDocTypeID和iCreditorID的外键 如果我从SPDocIndex执行一个简单的SELECT*,我会得到所有结果,只显示ID,这在绑

我对SQL查询有点陌生,所以这可能很容易修复,但我似乎找不到任何答案

我有一大堆相关的表格。例如。 SPClient包含iClientID和sName,SPDocTypes包含iDocTypeID和sName,SPCreditor包含iCreditorID和sName

然后

SPDocIndex包含iIndexID,然后是上面列出的iClientID、iDocTypeID和iCreditorID的外键

如果我从SPDocIndex执行一个简单的SELECT*,我会得到所有结果,只显示ID,这在绑定到datagrid时没有多大用处。因此,我使用了一个内部连接,这样实际的名称就会出现,而不仅仅是它们的ID,如下所示:

SELECT * FROM SPDocIndex
INNER JOIN SPClients ON SPDocIndex.iClientID=SPClients.iClientID
INNER JOIN SPDocType ON SPDocIndex.iDocTypeID=SPDocType.iDocTypeID
INNER JOIN SPCreditor ON SPDocIndex.iCreditorID=SPCreditor.iCreditorID

查询“工作”,但它只返回在所有三列中都包含数据的行。如果SPDocIndex的iCreditorID列为null,则不会返回该行……但我希望返回所有行,而不管这些列是否为null。

Benny-其他一些人在评论中回应说,您需要将联接调整为左联接,而不是内部联接;事实上,这里的情况就是这样。请查看此链接以获取有关SQL联接之间差异的快速教程。

尝试左键连接!添加isnull(SPDocIndex.iCreditorID“”)=isnull(spcredent.iCreditorID“”),并检查@jarlh是否可能重复-谢谢。成功了!我不知道左、右、内等之间有什么区别(显然…@mjwills-是的,这就是我的意思。对不起!:)
Inner Join will always return the return the matching records within two table. In order  to get the all the records from first table and matching record of second table you must use left join as shown below. Please try below and let me know if you have any further issues.

SELECT * FROM SPDocIndex
LEFT JOIN SPClients ON SPDocIndex.iClientID=SPClients.iClientID
LEFT JOIN SPDocType ON SPDocIndex.iDocTypeID=SPDocType.iDocTypeID
LEFT JOIN SPCreditor ON SPDocIndex.iCreditorID=SPCreditor.iCreditorID