我有一个名为memberreport的表,其中成员可以发送多个报告。但是,我正在尝试检查已提交超过3份报告的成员。
每个memberaccount都有一个唯一的属性,即memberID。所有成员报告都需要一个成员帐户(包含memberID)才能报告。
从下面的SQL代码中可以看到
SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI");
con.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("Select distinct memberID from MemberReport where memberID >= 3", con);
da.Fill(ds);
ddlNRIC.DataSource = ds;
ddlNRIC.DataTextField = "memberID";
ddlNRIC.DataValueField = "memberID";
ddlNRIC.DataBind();
con.Close();
我正在尝试显示已提交超过3份报告的memberID。但是,我从Visual Studio
收到此错误Conversion failed when converting the varchar value 'Q12345T' to data type int.
数字和字母'Q12345T'是memberID。我的属性为varchar。但我插入了这行代码
memberID >= 3
应该能够显示已提交超过3个报告的memberID没有工作。我正在尝试显示在下拉列表中提交了3个以上报告的memberID。我添加了一个独特的,应该能够防止重复的memberID。
答案 0 :(得分:3)
从MemberReport中选择不同的memberID,其中memberID> = 3
你的成员id是sql server中的varchar(xx)是错误
在memberID上使用group by
子句,你的条件应该在count> = 3而不是在memberID上。
select memberID from MemberReport
group by memberID
having (count(memberID) >= 3)
答案 1 :(得分:1)
where
检查列的值,而不是该列在表中出现的次数。对于此类任务,您需要having
子句:
select memberID from MemberReport
group by memberID
having (count(memberID) >= 3)