当我使用IN
时,它会显示包含parameter1或parameter2的所有记录,但我希望它带来的记录包含两者,而不仅仅是其中一个。
如果我的问题不明确,我可以尝试再解释一下。
select Hatlar.Name
from HATLAR,
[HAT-DURAK],
DURAKLAR
where HATLAR.Hat_Id = [HAT-DURAK].Hat_Id
and DURAKLAR.Durak_Id = [HAT-DURAK].Durak_Id
and DURAKLAR.Name IN ('parameter1', 'parameter2')
答案 0 :(得分:1)
做GROUP BY
。使用having count distinct
确保两个DURAKLAR.Names都在那里。
select Hatlar.Name
from HATLAR,
[HAT-DURAK],
DURAKLAR
where HATLAR.Hat_Id = [HAT-DURAK].Hat_Id
and DURAKLAR.Durak_Id = [HAT-DURAK].Durak_Id
and DURAKLAR.Name IN ('parameter1', 'parameter2')
group by Hatlar.Name
having count(distinct DURAKLAR.Name) = 2
答案 1 :(得分:1)
首先,学会使用正确的JOIN
语法。 FROM
条款中的逗号在20世纪是如此。
其次,您可以使用GROUP BY
和HAVING
:
Select h.Name
from HATLAR h join
[HAT-DURAK] hd
on h.Hat_Id = hd.Hat_Id join
DURAKLAR d
on d.Durak_Id = d.Durak_Id
where d.Name IN ('parameter1', 'parameter2')
group by n.Name
having count(d.Name) = 2;
注意:如果重复项可以出现在联结表中,请使用count(distinct d.Name)
。
答案 2 :(得分:0)
如果我理解这个问题,这应该有用(假设参数实际上是那个,而不是硬编码的字符串):
select Hatlar.Name
from HATLAR,
[HAT-DURAK],
DURAKLAR
where HATLAR.Hat_Id = [HAT-DURAK].Hat_Id
and DURAKLAR.Durak_Id = [HAT-DURAK].Durak_Id
and DURAKLAR.Name Like '%' + @parameter1 + '%'
and DURAKLAR.Name Like '%' + @parameter2 + '%'