子查询中的未知列-mysql

子查询中的未知列-mysql,mysql,Mysql,我很快就要完成这个困难的问题了。它相当长,所以希望不要太过势不可挡。但在我的示例中,在select块中,我引用了where语句中的一个联合。它给了我MySQL数据库错误:“where子句”中的未知列“U.EmpID”。任何帮助都将不胜感激。以下是查询: SELECT U.EmpID, CASE WHEN ((SELECT COUNT(*) FROM (SELECT * FROM

我很快就要完成这个困难的问题了。它相当长,所以希望不要太过势不可挡。但在我的示例中,在select块中,我引用了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”。

在第4行到最后一行,小写的“U”会是您的问题吗?只是一个猜测,因此评论,而不是回答:好的捕获,不,这没有解决它,虽然愚蠢的问题,但列EmpID确实存在?是的,它存在,我只是检查: