0

我有一个名为 memberreport 的表,成员可以在其中发送多个报告。但是,我正在尝试检查那些提交超过 3 份报告的成员。

每个成员帐户都有一个唯一属性,即 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”是一个会员ID。我的属性是 varchar。但是我插入了这行代码

memberID >= 3

应该能够显示提交了超过 3 个报告但没有工作的会员 ID。我正在尝试在下拉列表中显示已提交超过 3 个报告的 memberID。我添加了一个独特的,它应该能够防止重复的成员 ID。

4

2 回答 2

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)
于 2013-07-30T06:33:04.720 回答
1

where检查列的值,而不是该列在表中出现的次数。对于此类任务,您需要having子句:

select memberID from MemberReport
group by memberID
having (count(memberID) >= 3)
于 2013-07-30T06:30:08.743 回答