我有两个表,“客户”和“文档”。
客户表的定义如下:
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
但是我得到了错误的结果。
谢谢!
答案 0 :(得分: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
或right 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;
答案 1 :(得分:0)
尝试:
选择d。,c。 来自文件d 在c.clientId = d.clientId上左加入客户端c -添加您选择的where子句和order by子句