如何从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;