MySQL合并为一些null,而不是全部null

MySQL合并为一些null,而不是全部null,mysql,null,conditional,coalesce,Mysql,Null,Conditional,Coalesce,我有一个MySQL查询,它检查员工日程数据库,并(感谢前面的stackoverflow问题)返回用户不工作的任何日期,作为“无工作”,因此,如果用户周四不工作,即使该日期没有出现在原始结果集中,查询也会填充该日期(因此我不必通过PHP脚本来填补这些空白) 现在的问题是,如果用户在两周后检查日程安排,那么整个星期都显示“没有工作”。如果没有结果,脚本应该输出“对不起,本周没有发布日程安排”,这样用户就不会误以为他有一周的休息时间,知道以后再检查 因此,问题是: 对于以下内容,最好的查询语法是什么:

我有一个MySQL查询,它检查员工日程数据库,并(感谢前面的stackoverflow问题)返回用户不工作的任何日期,作为“无工作”,因此,如果用户周四不工作,即使该日期没有出现在原始结果集中,查询也会填充该日期(因此我不必通过PHP脚本来填补这些空白)

现在的问题是,如果用户在两周后检查日程安排,那么整个星期都显示“没有工作”。如果没有结果,脚本应该输出“对不起,本周没有发布日程安排”,这样用户就不会误以为他有一周的休息时间,知道以后再检查

因此,问题是: 对于以下内容,最好的查询语法是什么:

SELECT 
If Count(*) > 0 {
COALESCE(gooddata, nulldata) AS thedata
etc.
etc.
FROM sched_table
WHERE dates BETWEEN xxx AND yyy
因此,如果所有行都为空(或计数为0),则不会返回任何行

我尝试为计数添加一列,让脚本输出“未发布”并在一次迭代后退出,但在好的几周,它在一次迭代后仍然退出,所以我感到沮丧


如果我退一步,我确信我可以让脚本做我想做的事情,但我很好奇是否有一种方法可以在查询中这样做,以便至少有一行非空值才能合并其他空行。

我实际上认为,使用数据库进行行级格式化可能会走得太远/条件输出操作。PHP在进行字符串比较和算术方面实际上比MySQL快得多。与我一起工作的开发人员的不成文政策一直是,我们不使用数据库来格式化输出,我认为您正在进入这一领域


我很想知道其他人是否同意这一建议。我可能会将其作为一个新问题发布……在使用数据库格式化输出时,人们在哪里划清界限?

我实际上认为,使用数据库进行行级格式化/条件输出操作可能会走得太远。PHP实际上是一个错误我在字符串比较和算术方面没有MySQL快。与我一起工作的开发人员的不成文政策一直是,我们不使用数据库来格式化输出,我认为您正在进入这一领域


我很想知道其他人是否同意这一建议。我可能会将其作为一个新问题发布……在使用数据库格式化输出时,人们在哪里划清界限?

最有可能的是,您的查询与某种行集连接,以生成一周中的所有天

将条件添加到该行集中:

SELECT  COALESCE(gooddata, nulldata) AS thedata
FROM    (
        SELECT  *
        FROM    days_of_week
        WHERE   EXISTS
                (
                SELECT  NULL
                FROM    sched_data
                WHERE   dates BETWEEN xxx AND yyy
                )
        )
LEFT OUTER JOIN
        sched_data
WHERE   dates BETWEEN xxx AND yyy

最可能的情况是,您的查询与某种行集连接,以生成一周中的所有天数

将条件添加到该行集中:

SELECT  COALESCE(gooddata, nulldata) AS thedata
FROM    (
        SELECT  *
        FROM    days_of_week
        WHERE   EXISTS
                (
                SELECT  NULL
                FROM    sched_data
                WHERE   dates BETWEEN xxx AND yyy
                )
        )
LEFT OUTER JOIN
        sched_data
WHERE   dates BETWEEN xxx AND yyy

哦,不,一个包含两个内部选择的联接,其中一个存在条件?你是认真的吗?用一个简单的并集来填补空白怎么样??)类似于

选择真实的每周数据 联合 选择伪空周


这个联合甚至会为你提供唯一的结果,给你你想要的东西。

哦,不,一个连接有两个内部选择,其中一个存在条件?你是认真的吗?用一个简单的并集来填空怎么样??)差不多

选择真实的每周数据 联合 选择伪空周


这个联盟甚至会为你带来独一无二的结果,给你你想要的东西。

我听说过这个想法,并且一直坚持到最近。但有三件事让我转向了db格式:1)它可以做到(关于如何做到这一点,mysql文档上的文档比其他任何文档都多),2)当mysql可以在一个查询中返回填充的空格时,我真的不想多次重复我的结果,3)具有强查询意味着可以更快地将其移动到其他语言。在这一点上,我很想发疯,让查询返回已经包装在标记中的数据,但现在它不是格式化数据,而是返回“数据”,即日期之间的空格,而不是由PHP执行。@anthony-ooohhh。。。使用数据库为您标记输出。“你刚才让我哭了。”代码猴——我说过我只是在想那个。别担心,我没有发疯!我听说过这个想法,并且一直坚持到最近。但有三件事让我转向了db格式:1)它可以做到(关于如何做到这一点,mysql文档上的文档比其他任何文档都多),2)当mysql可以在一个查询中返回填充的空格时,我真的不想多次重复我的结果,3)具有强查询意味着可以更快地将其移动到其他语言。在这一点上,我很想发疯,让查询返回已经包装在标记中的数据,但现在它不是格式化数据,而是返回“数据”,即日期之间的空格,而不是由PHP执行。@anthony-ooohhh。。。使用数据库为您标记输出。“你刚才让我哭了。”代码猴——我说过我只是在想那个。别担心,我没有发疯!