数据表的数据如下
ID 产品名称 年份
1 产品1 2003
2 产品1 2004
3 产品1 2005
4 产品1 2006
5 产品2 2004
6 产品2 2005
7 产品2 2006
8 产品3 2005
9 产品3 2006
10 产品3 2007
11 产品3 2008
=========================
如何写一条SQL语句,得到 这3个产品共有的年份,从上表数据看,应该得到的数据为2005 2006 然后把这个年份的数据绑定到DropDownList控件里。
ID 产品名称 年份
1 产品1 2003
2 产品1 2004
3 产品1 2005
4 产品1 2006
5 产品2 2004
6 产品2 2005
7 产品2 2006
8 产品3 2005
9 产品3 2006
10 产品3 2007
11 产品3 2008
=========================
如何写一条SQL语句,得到 这3个产品共有的年份,从上表数据看,应该得到的数据为2005 2006 然后把这个年份的数据绑定到DropDownList控件里。
create table Product
(
name nvarchar(100),
year int
)insert into Product values('产品1','2003')
insert into Product values('产品1','2004')
insert into Product values('产品1','2005')
insert into Product values('产品1','2006')
insert into Product values('产品2','2004')
insert into Product values('产品2','2005')
insert into Product values('产品2','2006')
insert into Product values('产品3','2005')
insert into Product values('产品3','2006')
insert into Product values('产品3','2007')
insert into Product values('产品3','2008')
select year from Product
group by year
having count(year)=3
group by year
having count(year)>=2
这句是什么意思?
3就是产品的个数,如果你不知道有多少产品,应该把3换成产品的distinct
还是不明白,我上面列的只是部分数据,产品很多,年份也很多。
所以先问一下having count(distinct(goodsname))>2 这句取什么作用?
select year from table group by year having count(distinct(goodsname))=(select count(distinct(goodsname)))
select year from table group by year having count(distinct(goodsname))=3
测试数据改成
insert into Product values('产品1','2003')
insert into Product values('产品1','2004')
insert into Product values('产品1','2005')
insert into Product values('产品1','2006')
insert into Product values('产品2','2004')
insert into Product values('产品1','2005')
insert into Product values('产品2','2006')
insert into Product values('产品1','2005')
insert into Product values('产品3','2006')
insert into Product values('产品3','2007')
insert into Product values('产品3','2008')你就会发现问题了 2005 不应该出现
group by year
select year from table group by year having count(distinct(goodsname))=n刚测试了一下 没的问题 有问题再解决
===================
如果只有一个产品情况下呢?
having count(distinct(name ))=(select count(distinct(name )) from Product)
aa是传来的参数,比如1,2,88,
string bb = (System.Convert.ToInt32(aa.Split(',').Length.ToString()) - 1).ToString();
strSel1 += "and (" + sql1 + ") group by nian having count(distinct(cp_id))="+bb+" order by nian asc";
=============
整整测试我的一个下午啊,但还是值得的。
谢谢大家了
其实这个答案也是对的,只不过,我这里是接收传来的cp_id的个数。
但道理是一样的。