如何查看SQL中的其他列是否为空?

时间:2014-03-07 23:39:06

标签: php html sql

我将学期成绩保存在表格中。学生每学期参加2次考试,课程长达4个学期(共8次考试)。我已经检查了表中是否有绝对没有等级,现在已经通过...我如何检查,最好是给出的最后等级,并回显所有等级到那一点。

$sql1 = "SELECT * FROM infot WHERE Vorname='".$_SESSION['Fname']."'";
$res1 = mysql_query($sql1);

$check1 = mysql_num_rows($res1);
if ($check1 > 0 )
        while ($row1 = mysql_fetch_assoc($sql1))
        {
        $note1 = 
        "

        ";
        }
    else
    {
    $nichts1=
    "
    <h2> Info T </h2> <br>
    Es gibt noch keine Noten, bereite dich vor! Klausuren kommen!!
    ";

    echo $nichts1;
    }

请原谅德国人,我在德国工作=)但我的问题是,我究竟应该放入$ note1,我的意思是我必须再做一次num_row检查或者...这将是最无痛的方式这样做?

请不要告诉我检查每个等级的NULL ...我知道该怎么做但看起来好像不需要的工作=)

1 个答案:

答案 0 :(得分:1)

如果在单个表中包含所有这些字段,则需要检查每个字段是否为空。幸运的是,如果要检查它们是否 all 为null,则可以使用COALESCE函数。它返回一系列值的第一个非空值。因此,如果它返回null,则表示您传递给它的每个值都是null

select
  *
from
  Students s
where
  COALESCE(TEST1, TEST2, SEM1Grade, TEST3, TEST4, SEM2Grade) IS NULL

要选择最后一个成绩,您可以通过还原字段的顺序来执行类似的操作:

select
  s.*,
  COALESCE(SEM2Grade, TEST4, TEST3, SEM1Grade, TEST2, TEST1) as LastGrade
from
  Students s

如果您需要更复杂的操作,可能仍需要更详细的查询。