MySql COALESCE无法正常工作

时间:2014-04-04 10:56:50

标签: php mysql coalesce

我有这个表,2个课程有12个可能的科目(内容:科目ID,如果没有更多的科目,则为NULL)。请注意,它最多可包含50个不同的课程,而不仅仅是2个

table

我正在尝试通过WHILE显示课程名称(workis罚款),并通过COALESCE在每门课程中显示课程的科目ID,这应该是最终结果:

CursodeProgramaciónCreativacon PHP y MySQL - CURSO:1 - CURSO:2 - CURSO:10 -

MásterenDiseñoyDesarrollo Web - CURSO:1 -


但是有些事情失败了,就像我的COALESCE表达式一样:

CursodeProgramaciónCreativacon PHP y MySQL - CURSO:1 - CURSO:1 -

MásterenDiseñoyDesarrollo Web - CURSO:1 - CURSO:1 -

以下是代码:

$select = select("SELECT * FROM course_conf JOIN course_type ON ct_id=co_fk_ct_id ORDER BY co_name");




while($registroBbdd = consultaRegistro($select))
{
    $courseName=$registroBbdd['co_name'];

    $result = select("SELECT COALESCE(co_subj1,co_subj2,co_subj3,co_subj4,co_subj5,co_subj6,co_subj7,co_subj8,co_subj9,co_subj10,co_subj11,co_subj12) FROM course_conf");

        echo '<div class="contentColumn80">
                <span class="tableContentText ">'.$courseName.' - </span>';

        while($row=mysql_fetch_array($result))
        {  
                echo '<span>CURSO: '.$row['COALESCE(co_subj1,co_subj2,co_subj3,co_subj4,co_subj5,co_subj6,co_subj7,co_subj8,co_subj9,co_subj10,co_subj11,co_subj12)'].' - </span>'; 
        }
        echo '</div>';
}

1 个答案:

答案 0 :(得分:1)

好的,有两个明显的错误:

  • COALESCE()将始终返回第一个参数,该参数不为空(在您的情况下始终存储在co_subj1中的值)
  • 第二个SQL查询不包含任何WHERE - 子句。因此,您将获得所有课程的co_subj1

虽然可能不是最好的解决方案,但这应该有效:

$select = select("SELECT * FROM course_conf JOIN course_type ON ct_id=co_fk_ct_id ORDER BY co_name");




while($registroBbdd = consultaRegistro($select))
{
    $courseName = $registroBbdd['co_name'];

    echo '<div class="contentColumn80">
                <span class="tableContentText ">'.$courseName.' - </span>';

    for($i = 1; $i <= 12; $i++)
    {
        if($registroBbdd['co_subj'.$i] != null) {
            echo '<span>CURSO: ' . $registroBbdd['co_subj'.$i] . ' - </span>';
        }
    }
    echo '</div>';
}