私はfunction analyze students results tableを作成しました。目標は、コンテンツタイプ別にグループ化された最高の平均結果を見つけることです。例:C#:Select文が正しい結果に表示されない
S_Id ContentType Result
1 T 50
1 V 70
1 G 30
1 G 40
1 V 60
Vの平均が最も高いので、必要な出力はVです。
これは私のコードですが、正しい結果を表示しません。 私の出力はテーブルの5番目の行を表示しています。
public string analyzeResultTable(string studentId)
{
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["AHSConnection"].ToString();
DataSet ds = new DataSet();
DataSet dsAns = new DataSet();
string BestPrefrence = "";
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
MySqlCommand cmd2 =
new MySqlCommand(
"Select ContentType, MAX(avgContent) from (select ContentType, AVG(result) as avgContent from dopractice where S_Id='" +
studentId + "' GROUP BY ContentType) AS T", conn);
MySqlDataAdapter da = new MySqlDataAdapter(cmd2);
da.Fill(ds);
conn.Close();
}
if (ds.Tables[0].Rows.Count > 0)
{
BestPrefrence = ds.Tables[0].Rows[0]["ContentType"].ToString();
}
return BestPrefrence;
}
これは(あなたがパラメータ化されたSQLを使用することを学ぶべきであるが)* Cの#とは何か*を持っていることは明らかではありません。このクエリをMySQLで直接作成しようとしましたか? –
私はC#でMySql文を書いた経験がありません – John
しかし、問題はC#ではありません - SQLにあります。最初にMySQLツールでクエリを実行し、それをC#に移動してください。パラメータ化されたSQLを使用してください。 (あなたがそれを行う方法がわからない場合は、 "parameterized sql mysql c#"を検索すると多くの結果が得られます。 –