【发布时间】:2014-04-04 10:56:49
【问题描述】:
我有这张表,2 门课程有 12 个可能的科目(内容:科目 ID,如果没有更多科目存在,则为 NULL)。请注意,它最多可以包含 50 个不同的课程,而不仅仅是 2 个
我正在尝试通过 WHILE 显示课程名称(工作正常)并通过 COALESCE 在每门课程中显示课程的主题 ID,这应该是最终结果:
Curso de Programación Creativa con PHP y MySQL - CURSO: 1 - CURSO: 2 - CURSO: 10 -
Máster en Diseño y Desarrollo Web - CURSO: 1 -
但是我得到的 COALESCE 表达式失败了:
Curso de Programación Creativa con PHP y MySQL - CURSO: 1 - CURSO: 1 -
Máster en Diseño y Desarrollo 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>';
}
【问题讨论】:
-
您的 COALESCE 将返回 co_subj1 的值,因为它是 NOT NULL 的第一个表达式,因此它始终为 1。stackoverflow.com/questions/13366488/coalesce-function-in-tsql