mysql - 子查询中的未知列 - mysql

标签 mysql

我即将完成这个困难的查询。它很长,所以希望不会太长。但在 select block 中的 case 语句中,我引用了 where 语句中的并集。它给我“MySQL 数据库错误:'where 子句'中的未知列'U.EmpID'”。任何帮助将非常感激。这是查询:

SELECT U.EmpID,
   CASE
      WHEN     ((SELECT COUNT(*)
                   FROM (SELECT *
                           FROM timeclock_copy tp
                          WHERE     PunchEvent = 'breakin'
                                AND DATE(tp.PunchDateTime) =
                                      '2013-11-12'
                                AND tp.EmpID = U.EmpID) AS s) > 1)
           AND ((SELECT COUNT(*)
                   FROM (SELECT *
                           FROM timeclock_copy tp
                          WHERE     PunchEvent = 'breakout'
                                AND DATE(tp.PunchDateTime) =
                                      '2013-11-12'
                                AND tp.EmpID = U.EmpID) AS s) > 1)
      THEN
         "MULTIPLE BREAKS"
      ELSE
         "ONE BREAK"
   END
      AS Lunch
FROM ((SELECT `enter`.EmpID,
                `enter`.PunchDateTime AS `time`,
                DATE_FORMAT(`enter`.PunchDateTime, '%m-%d-%Y')
                   AS 'Punch Date',
                TIMESTAMPDIFF(SECOND,
                              `enter`.PunchDateTime,
                              '2003-05-01 00:00:00')
                   AS `delta`
           FROM timeclock_copy AS `enter`
          WHERE `enter`.`In-Out` = 1)
        UNION
        (SELECT `leave`.EmpID,
                `leave`.PunchDateTime AS `time`,
                DATE_FORMAT(`leave`.PunchDateTime, '%m-%d-%Y')
                   AS 'Punch Date',
                -TIMESTAMPDIFF(SECOND,
                               `leave`.PunchDateTime,
                               '2003-05-01 00:00:00')
                   AS `delta`
           FROM timeclock_copy AS `leave`
          WHERE `leave`.`In-Out` = 0)) AS U
       LEFT JOIN testclb.prempl pe ON u.EmpID = pe.prempl
 WHERE DATE(U.`time`) >= '2013-11-12' AND DATE(U.`time`) < '2013-11-13'
GROUP BY date(U.`time`), EmpID
ORDER BY U.EmpID, U.`time` ASC

最佳答案

FROM 子句中的子查询不能与外部语句关联。我认为这就是您在“where 子句”中收到“未知列 'U.EmpID'”错误的原因。

关于mysql - 子查询中的未知列 - mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126120/

相关文章:

在 Netbeans 中连接 azure 数据库的 Java 程序出现错误

mysql - 在主查询中使用子查询

PHP 无法将函数与来自另一个 PHP 脚本的查询一起使用

Mysql存储过程不返回任何值

mysql - 如何在MySQL中查看InnoDB表的大小?

php - 通过xml向mysql数据库插入数据

php - PHP:从MySQL获取JSON

mysql vb.net 已经有一个与此连接关联的打开的数据读取器

mysql - 是否可以将本地 MySQL 数据库复制到远程 MySQL 数据库?

javascript - 以动态形式计算选择字段的总和