php - MySql COALESCE 不工作

标签 php mysql coalesce

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

table

我暂时尝试显示类(class)名称(工作正常),并通过 COALESCE 在每门类(class)中显示类(class)的科目 ID,这应该是最终结果:

PHP 和 MySQL 的 Creativa 程序光标 - CURSO: 1 - CURSO: 2 - CURSO: 10 -

网络设计大师 - CURSO: 1 -

<小时/>

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

PHP 和 MySQL 的 Creativa 程序光标 - 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 中的值)
  • 第二个 SQL 查询不包含任何 WHERE 子句。因此,您将获得所有类(class)的 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>';
}

关于php - MySql COALESCE 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860848/

相关文章:

MySQL 查询 - 如果找不到条目,​​如何返回占位符值而不是 NULL

sql - 如何连接 Postgres SELECT 中的列?

PHP defined() 为什么它返回 false,即使定义了常量?

php - 使用函数显示 php 从 mysql db 检索的所有行?

php - 如果primary,auto increment field的列名不是id,可以使用$this->db->insert_id()函数

java - 单击按钮打开一个新的 JFrame

php - 更新记录然后删除

php - 在Query中获取MYSQL查询执行时间

php - 我希望我的游戏可以直接在 Facebook 上玩

memory - 合并是否触发以相反的顺序访问内存?