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 つ以上送信した memberID を表示できるはずです。ドロップダウンリストに 3 つ以上のレポートを送信したメンバー ID を表示しようとしています。メンバーIDの重複を防ぐことができるはずのdistinctを追加しました。

4

2 に答える 2

3

memberID >= 3 の MemberReport から個別の memberID を選択します

メンバーIDがSQLサーバーのvarchar(xx)である場所が間違っています

memberID で句を使用group byし、条件は memberID ではなく count>=3 にする必要があります。

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 に答える