如何从SQL Server中的另一个表中获取列?

如何从SQL Server中的另一个表中获取列?,sql,sql-server,Sql,Sql Server,我有两张桌子,客户和文件 客户机表的定义如下: ID | NAME | ADDRESS | TELEPHONE 112 | EXAMPLE | ABC#123 | 85548484 115 | WOAH! | ABC#123 | 85548484 文档的表格如下所示: ID|Number|ClientID|Total 1 | 363 | 112 | 25000 2 | 364 | 112 | 24000 3 | 365 | 115 | 21000

我有两张桌子,客户和文件

客户机表的定义如下:

ID   | NAME    | ADDRESS | TELEPHONE 
112  | EXAMPLE | ABC#123 | 85548484
115  | WOAH!   | ABC#123 | 85548484
文档的表格如下所示:

ID|Number|ClientID|Total
1 | 363  |  112   | 25000
2 | 364  |  112   | 24000
3 | 365  |  115   | 21000
如何在不使用内部联接的情况下获得这样的结果

ID|Number|ClientID|Total| NAME    | ADDRESS | TELEPHONE 
1 | 363  |  112   |25000| EXAMPLE | ABC#123 | 85548484
2 | 364  |  112   |24000| EXAMPLE | ABC#123 | 85548484
3 | 365  |  115   |21000| WOAH!   | ABC#123 | 85548484
我试过了

Select Documents.*, 
       (Select *from Clients where DOcuments.ClientID = Clients.ID ) 
FROM Documents
但是我得到了错误的结果

谢谢大家!

您可以使用应用:

也可以使用左连接:

或使用完全联接、右联接或外部联接的类似构造。对内部联接的限制很奇怪

编辑:

如果要保留所有客户端,即使是没有文档的客户端:

select d.*, c.name, c.address, c.telephone
from clients c left join
     documents d
     on d.clientid = c.id;
尝试:

选择d,c。 来自文件d 在c.clientId=d.clientId上左连接客户端c
-添加您选择的where子句和order by子句

内部联接有什么问题?问题是当ClientID为NULL时,我没有得到行..即使使用内部联接,如果ClientID为NULL,也不会得到结果。是否要将客户端表中ClientID=NULL的所有行联接到文档表中ClientID=NULL的所有行?谢谢,我解决了外部应用程序的问题。问题是当文档表中的ClientID为NULL时,当该行为空时,该行不相似。。这就是问题所在。@mdelphi。您的数据中没有id为null的示例。
select d.*, c.name, c.address, c.telephone
from documents d left join
     clients c
     on d.clientid = c.id;
select d.*, c.name, c.address, c.telephone
from clients c left join
     documents d
     on d.clientid = c.id;