1

こんにちは私は次のように3つのテーブルを持っています

ここに画像の説明を入力してください

ユーザーが合格したコースのAGPAを取得したい

ここに画像の説明を入力してください

このSQL構文を使用しました

string queryString = 
     "select R.mark, c.NumberOfCredits 
      from Courses c, RegisteredIn R 
      where R.CourseId=c.id and R.StudentId=StudentId and 
            R.mark > 60 R.mark themark,c.NumberOfCredits credit 
            select (sum(themark*credit)/sum(credit))*0.04 AGPA    ";

結果を印刷するためにこれを行いました

using (SqlConnection connection = new SqlConnection(connectionString)){
        SqlCommand command = new SqlCommand(queryString, connection);

        connection.Open();
        System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
        reader.Read();

        result = string.Empty;

        _AGPA = reader[3].ToString();

        result += string.Format("Your GPA : {0} </br>  ",_AGPA);

       Response.Write(result);
       reader.Close();
 }

SQL構文が間違っていると確信していますこのエラーが発生します

ここに画像の説明を入力してください

それを解決する方法と私がどこで間違いをしたかを親切にアドバイスしてください。

ありがとうございました


アップデート :

データ型は、SQLServerデータベースを使用した次のとおりです。 ここに画像の説明を入力してください


アップデート2:

StudentIdは、次のようにページのURLを介して渡されます

http://localhost:3401/MobileWebWIthConnection/showagpa.aspx?StudentId=20111

そしてコードで私はそれを読んだ

string StudentId = Request.Params["StudentId"];
4

2 に答える 2

2

このクエリを試してください。StudentIdのAGPAが返されます。

select (sum(cast(R.mark as numeric) * cast(c.NumberOfCredits as numeric)) / sum(cast(c.NumberOfCredits as numeric)))*0.04 AGPA
from Courses c join RegisteredIn R 
on R.CourseId = c.id 
where R.StudentId = @studentId and R.mark > 60

あなたのラインの後

SqlCommand command = new SqlCommand(queryString, connection);

追加

command.Parameters.AddWithValue("studentId", YOUR_VARIABLE_FROM_URL);
于 2012-05-04T17:38:36.380 に答える
0

問題はここにあります:「そしてR.mark> 60 R.mark themark」あなたは演算子か何かを逃していますか?

私の推測では、>60の後に「R.markthemark」を削除する必要があるだけだと思います

于 2012-05-04T17:34:57.157 に答える