-2

我有两个表,客户和文档。

客户表定义如下:

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

如何在不使用 INNER JOIN 的情况下获得这样的结果?:

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

但我得到了错误的结果..

谢谢!

4

2 回答 2

0

您可以使用apply

select d.*, c.name, c.address, c.telephone
from documents d cross apply
     (select c.*
      from clients c
      where d.clientid = c.id
     ) c;

你也可以使用left join

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

full join或使用orright join或的类似结构outer apply。限制inner join非常奇怪。

编辑:

如果您想保留所有客户,即使是没有文件的客户:

select d.*, c.name, c.address, c.telephone
from clients c left join
     documents d
     on d.clientid = c.id;
于 2018-10-31T21:43:39.857 回答
0

尝试:

选择 d。, C。 从文档 d left join clients c on c.clientId = d.clientId -- 添加您选择的 where 子句和 order by 子句

于 2018-10-31T23:46:18.097 回答