我在SQL-Server上有两个表。一个包含客户端,一个包含客户端配置文件查找表。所以有点像这样(注意Fred在查找表中没有任何值):
<!-- Search box -->
<input type="text" id="txt_name" />
<!-- Search button-->
<input type="button" id="searchTest" value="Search"/>
<!-- Searching for the ID that the user enter -->
<script language='JavaScript' type='text/JavaScript'>
$('#searchTest').click(function() {
// removes all the div class before displaying the results
$('div[id*=ID_]').css('display', 'none');
//display only whatever the user's entered
$('div[id*=ID_]').filter(bla).css('display', 'block');
});
</script>
<!-- Test boxes that needs filtering-->
<div class="color1" id="USEID_company1_user1_Location1">
<p> test</p>
</div>
<div class="color2" id="USEID_company2_user2_Location2">
<p> test</p>
</div>
然后我尝试创建一个需要包含所有当前客户端的tmp表:
Table: Clients Table: Profile
ID | Name | Status ClientID | Type | Value
----------------------- -----------------------
1 | John | Current 1 | x | 1
2 | Peter | Past 1 | y | 2
3 | Fred | Current 2 | x | 3
2 | y | 4
我对SQL的了解有限,但我认为我应该能够通过左连接执行此操作,所以我尝试了这个(#tmpClient已经创建):
ID | Name | TypeY
==================
1 | John | 2
3 | Fred |
然而,这将永远错过Fred临时表。我可能正在做一些非常简单的错误,但正如我所说,我错过了SQL技能来解决这个问题。请有人帮我解决这个问题。
答案 0 :(得分:2)
您必须将LEFT JOIN
操作的第二个表的谓词从WHERE
移动到ON
子句:
insert into #tmpClient
select a.ID, a.Name, b.Value
from Clients a
left join Profile b
on a.ID = b.ClientID and b.Type = 'y'
where a.Status = 'Current'