Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下面是一些想法。谢谢,很抱歉我的问题让人困惑。我的主要疑问是(mark+=)是否等于“totalMark”,我尝试了你的方法,但我没有得到“如果用户选择10,那么从你的表中选择前5名,其中分数为2或分数为4”的部分,因为结果将超过10,如果你的意思是“如果_C#_Asp.net_Sql Server - Fatal编程技术网

C# 下面是一些想法。谢谢,很抱歉我的问题让人困惑。我的主要疑问是(mark+=)是否等于“totalMark”,我尝试了你的方法,但我没有得到“如果用户选择10,那么从你的表中选择前5名,其中分数为2或分数为4”的部分,因为结果将超过10,如果你的意思是“如果

C# 下面是一些想法。谢谢,很抱歉我的问题让人困惑。我的主要疑问是(mark+=)是否等于“totalMark”,我尝试了你的方法,但我没有得到“如果用户选择10,那么从你的表中选择前5名,其中分数为2或分数为4”的部分,因为结果将超过10,如果你的意思是“如果,c#,asp.net,sql-server,C#,Asp.net,Sql Server,下面是一些想法。谢谢,很抱歉我的问题让人困惑。我的主要疑问是(mark+=)是否等于“totalMark”,我尝试了你的方法,但我没有得到“如果用户选择10,那么从你的表中选择前5名,其中分数为2或分数为4”的部分,因为结果将超过10,如果你的意思是“如果用户选择10,那么从你的表中选择前5名,其中分数为2”,我不理解。它可以工作,但是,它只会显示5Q的分数=2,我想要一些不受限制的东西,比如点击2Q的分数=5,点击另一个q的分数=5,两个分数=2,一个分数=1,等等。首先,非常感谢你的帮助,我


下面是一些想法。谢谢,很抱歉我的问题让人困惑。我的主要疑问是(mark+=)是否等于“totalMark”,我尝试了你的方法,但我没有得到“如果用户选择10,那么从你的表中选择前5名,其中分数为2或分数为4”的部分,因为结果将超过10,如果你的意思是“如果用户选择10,那么从你的表中选择前5名,其中分数为2”,我不理解。它可以工作,但是,它只会显示5Q的分数=2,我想要一些不受限制的东西,比如点击2Q的分数=5,点击另一个q的分数=5,两个分数=2,一个分数=1,等等。首先,非常感谢你的帮助,我尝试了这个“选择不同的主题,级别,难度,问题,和(分数)从addquestion中,主语为“+sudjectID.SelectedValue+”,级别为“+level.SelectedValue+”,难度为“+dif.SelectedValue+”,按主语、级别、难度分组,问题的总和(标记)=“+total.SelectedValue+”按新ID排序();“``”但它给了我“如果指定了select DISTINCT,则ORDER BY items必须出现在选择列表中。”因此,我暂时删除了ORDER BY NEWID(),然后重试。但它什么也不显示,没有错误但没有结果,当我删除DISTINCT时,它只显示重复的记录。那么问题出在哪里呢。。对于//这里有一个代码示例(未经测试,仅用于演示),哇,这让我明白了我的代码有多么愚蠢:D,我试过你的,它更简单、更有效,但仍然有按错误排序,这一次有或没有DISTINCT,它只显示重复的行。我在另一个没有重复行的表上尝试了它,但结果一无所获。真的很感谢你让事情看起来simpler@Lojain如果您可以提供表中的示例数据(addquestion),它将帮助我调试它并给您一个答案。但是,您始终可以直接(在代码之外)查询表并检查结果,然后将结果与应用程序结果进行匹配。如果不匹配,则您必须处理代码以修复它。@Lojain如果您使用的是try/catch块,请确保您的catch块不是空的,使其返回异常错误以便能够跟踪它。如果更简单,请在此链接到表[link],如果不方便,请告诉我编辑我的问题并放一张图片。对于(您总是可以直接(在代码之外)查询表并检查结果),您的意思是使用sql数据库管理器吗?因为我正在处理来自vs的db,但如果它有帮助,我会下载它

    [level]       INT    
    [subjectId]   VARCHAR 
    [subjectname] VARCHAR
    [question]    VARCHAR
    [answer]      VARCHAR
    [difficulty]  CHAR 
    [mark]        INT      

SELECT columns, aggratiotion functions (e.g. SUM, COUNT ..etc)
FROM tableName
WHERE 
    column = value 
GROUP BY columns 
HAVING 
 (aggratiotion functions) = value 
SELECT 
    subjectId
,   level
,   difficulty
,   question
,   SUM(mark) 
FROM 
    addquestion 
WHERE 
    subjectId   = somevalue
AND level       = somevalue
AND difficulty  = somevalue
GROUP BY 
    subjectId
,   level
,   difficulty
,   question
HAVING 
    SUM(mark) = somevalue
"SELECT DISTINCT subjectId, level, difficulty, question, SUM(mark) FROM addquestion WHERE subjectId = '" + sudjectID.SelectedValue + "' AND level = " + level.SelectedValue + " AND difficulty = '" + dif.SelectedValue + "' GROUP BY subjectId, level, difficulty, question HAVING SUM(mark) = " + total.SelectedValue + " ORDER BY NEWID()";
string query = string.Empty;

string[] difficulties = {"easy", "medium", "hard"};

if(!difficulties.Contains(dif.SelectedValue))
{ 
    query = string.Format("SELECT DISTINCT subjectId, level, difficulty, question, SUM(mark) FROM addquestion WHERE subjectId = '{0}' AND level = {1} GROUP BY subjectId, level, question HAVING SUM(mark) = {2} ORDER BY NEWID()", sudjectID.SelectedValue, level.SelectedValue, total.SelectedValue); 
}       
else
{
    query = string.Format("SELECT DISTINCT subjectId, level, difficulty, question, SUM(mark) FROM addquestion WHERE subjectId = '{0}' AND level = {1} AND difficulty = '{2}' GROUP BY subjectId, level, difficulty, question HAVING SUM(mark) = {3} ORDER BY NEWID()", sudjectID.SelectedValue, level.SelectedValue, dif.SelectedValue, total.SelectedValue); 
}       


var dataTable = new DataTable(); 

using(SqlConnection con = new SqlConnection(ConnectionString))
using(SqlCommand command =  new SqlCommand(query, con))
using(SqlDataAdapter adapter = new SqlDataAdapter(command))
{
    con.Open();
    adapter.Fill(dataTable);
}

GridView1.DataSource = dataTable;
GridView1.DataBind();
    if (!difficulties.Contains(dif.SelectedValue.ToLower()))
    {

        query = string.Format("SELECT subjectId, level, difficulty, question FROM (SELECT *, SUM(mark) OVER(PARTITION BY subjectId ORDER BY subjectId ROWS UNBOUNDED PRECEDING) TotalMark FROM addquestion) d WHERE subjectId = '{0}' AND level = {1} AND TotalMark <= {2}", sudjectID.SelectedValue.ToString().Trim().ToLower(), level.SelectedValue, total.SelectedValue);
    }
    else
    {
        query = string.Format("SELECT subjectId, level, difficulty, question FROM (SELECT *, SUM(mark) OVER(PARTITION BY subjectId, difficulty ORDER BY subjectId ROWS UNBOUNDED PRECEDING) TotalMark FROM addquestion) d  WHERE subjectId = '{0}' AND level = {1} AND TotalMark <= {2} AND difficulty = '{3}'", sudjectID.SelectedValue.ToString().Trim().ToLower(), level.SelectedValue,total.SelectedValue, dif.SelectedValue.ToString().Trim().ToLower());
    }