我正在开展一个项目,为学习中心建立评估领导委员会。我有一张看起来像这样的桌子
我正在尝试编写一个查询,它将从CLASS中选择所有表格,在DATE范围内,为每个STUDENT_ID添加分数,然后按添加的分数降序排序以创建排行榜。我已经阅读了一些有关子查询的内容,但不太了解这些示例或它们究竟是如何工作的,我还认为我在查询中需要一个SELECT DISTINCT student_id,但我的知识也有限,因为我只使用过一次
无论如何,这是我到目前为止所做的。
$classcheck = mysql_query("SELECT *
FROM assessment
WHERE class = '$class_info'
order by score DESC")
or die(mysql_error());
if(mysql_num_rows($classcheck) > 0){
while($row = mysql_fetch_array($classcheck)){
if(strtotime($row["date"]) > strtotime($fromdate) && strtotime($row["date"]) < strtotime($todate)){
echo $row['score'].'<p>';
}
}
}
但是我需要它来添加SCORE并通过在查询中添加的SCORE来添加顺序,这是我用我所写的内容无法实现的。
我知道应该开始使用PDO而不是mysql_query,知识再次受限,而且我的时间已经不多了。所有反馈将不胜感激。 OH,分数确实是一个百分比。
答案 0 :(得分:1)
您不需要子查询,只需要public class FirstType
{
public int A {get; set;}
public int B {get; set;}
}
public class SecoundType : FirstType
{
public int C {get; set;}
}
public class BaseClass
{
public virtual IQueryable<FirstType> GetQuery()
{
return db.Car.Select(v => new FirstType() { A = v.Column1, B = v.Column2 });
}
}
public class DerivedClass : BaseClass
{
public override IQueryable<FirstType> GetQuery()
{
// Here, I get the first query with the base result.
var query1 = base.GetQuery();
var query2 = db.Car.Select(v => new SecoundType() { A = v.Column1, B = v.Column2, C = v.Column3 });
// The error occur here.
return query1.Union(query2);
}
}
和SUM
按学生计算得分,并使用GROUP BY
子句来限制日期。
WHERE
答案 1 :(得分:0)
我认为git check-last-change --dir=app/styles/
可能会解决这个问题,因为你试图将个人STUDENT_ID的所有分数相加。
如果我错了,请随时纠正我,但下面的SQL应该可以帮到你找到你想要的东西。
GROUP BY
答案 2 :(得分:0)
$classcheck = mysql_query("Select Student_id, sum(Score) as SummedScore from assessment where class='$class_info' and
date between '$fromdate' and '$todate' Group by Student_ID Order By SummedScore"
or die(mysql_error());
if(mysql_num_rows($classcheck) > 0){
while($row = mysql_fetch_array($classcheck)){
echo $row['SummedScore'].'<p>';}
}