php - MySQL:如果所有值都存在则返回真

标签 php mysql sql

我如何使用一个查询检查我的数据库中是否填写了所有日期,我有一个数组包含所有应该填写的日期和我的数据库。我正在考虑使用 IN 但无法让它工作,到目前为止我的查询看起来像这样

SELECT `User` . * , `Department`.`name`, if(Hour.date IN('2014-05-05', '2014-05-05', ...), 1, 0) AS all_days_filled
FROM `kadry`.`users` AS `User`
    LEFT OUTER JOIN `kadry`.`departments` AS `Department` ON ( `Department`.`id` = `User`.`assigned` )
    LEFT OUTER JOIN `kadry`.`hours` AS `Hour` ON ( `Hour`.`subordinate_id` = `User`.`id` )
WHERE `User`.`assigned`
IN (
    '001004012', '116', '113', '114', '004001002'
)
AND `role` != 'superior'
AND `Department`.`active` = '1'
AND `User`.`active` = '1'
AND ((date( discharge ) > '2014-05-01')
OR (
    discharge IS NULL
   )
)
GROUP BY `User`.`id`
ORDER BY `Department`.`name` ASC , `User`.`l_name` ASC 

最佳答案

您可以尝试使用 GROUP_CONCAT 函数。默认情况下,它将返回以逗号连接的日期。如果您需要不同的分隔符,您可以将其指定为一个选项。您还可以将 DISTINCTORDER BY 放在 GROUP_CONCAT 中。

查看 mysql 文档 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

SELECT `User` . * , `Department`.`name`, 
CASE
WHEN GROUP_CONCAT(Hour.date ORDER BY HOUR.date) = '2014-05-01, 2014-05-02, ...' THEN 1 
ELSE 0
END AS all_days_filled
FROM `kadry`.`users` AS `User`
    LEFT OUTER JOIN `kadry`.`departments` AS `Department` ON ( `Department`.`id` = `User`.`assigned` )
    LEFT OUTER JOIN `kadry`.`hours` AS `Hour` ON ( `Hour`.`subordinate_id` = `User`.`id` )
WHERE `User`.`assigned`
IN (
    '001004012', '116', '113', '114', '004001002'
)
AND `role` != 'superior'
AND `Department`.`active` = '1'
AND `User`.`active` = '1'
AND ((date( discharge ) > '2014-05-01')
OR (
    discharge IS NULL
   )
)
GROUP BY `User`.`id`
ORDER BY `Department`.`name` ASC , `User`.`l_name` ASC 

关于php - MySQL:如果所有值都存在则返回真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037428/

相关文章:

php - 使用文本区域发布数据是否会自动添加斜杠(转义)文本?

mysql - 如何在一张表上按名称排序但只返回唯一的主键?

mysql - 在mysql中设置varchar()的最大大小有什么意义?

php - 在 MySQL 数据库中存储关联数组

php - $_SERVER ['REQUEST_SCHEME' ] 可靠吗?

php - 给出错误消息并提交给自己的登录页面

mysql - 如何选择相同 `userid` 其他字段具有特定值的行?

mysql - 无法读取未定义的属性 'query' - MySQL NodeJS

sql - 如何使用 INFORMATION_SCHEMA 查找默认约束?

sql - 每月有多少顾客首次在 STORE 1 进行购买?