我在尝试计算如何调整查询时遇到了一些困难。我不太擅长SQL查询,因为这不是我的强项。无论如何,我不确定我做错了什么。这是我的表格设置。
ID | Customer
---+-------------
1 | John
2 | Jane
3 | Steve
ID | Assets
---+-------------
1 | RealEstate
2 | Currency
3 | Stocks
CustomerID | AssetConfigurationId | Status
-----------+----------------------+-------
1 | 1 | E
1 | 2 | F
1 | 3 | X
2 | 3 | X
如果我查询customer = 3,我想得到以下
AssetConfigurationId | Status
---------------------+------------
1 | null
2 | null
3 | X
目前有这个。我试图了解如何使用左连接来显示所有资产,并且只为特定客户将状态值设置为null。现在它只显示第3行。尝试在SQL Server存储过程中执行此操作,以便我的.net应用程序可以获取资产列表,并且我只是在将它们转换为对象时修改状态。
select
ac.Id,
r.Status
from
assets ac
left join
assets_ref r on r.AssetConfigurationId = ac.Id
where
r.CustomerID = 3
答案 0 :(得分:0)
在内部查询中移动WHERE
条件。
select
ac.Id,
r.Status
from assets ac
left join
(select * from assets_ref where CustomerID = 3) r
on r.AssetConfigurationId = ac.Id;
答案 1 :(得分:0)
您可以在JOIN
s中使用多个条件:
select
ac.Id,
r.Status
from assets ac
left join assets_ref r
on r.AssetConfigurationId = ac.Id
and CustomerID = 3;