2013-11-21 41 views
0

我非常接近完成這個困難的查詢。這是相當長的,所以希望不要太壓倒。但在我的情況下,選擇塊的聲明我引用我的where語句的聯合。它給我「MySQL數據庫錯誤:'where子句'中的未知列'U.EmpID'」。任何幫助將非常感激。這裏是查詢:子查詢中的未知列 - mysql

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 
+1

在第四行到最後一行,那麼小寫'u'是你的問題嗎?評論,而不是回答:) – Timmy

+0

很好的捕獲,沒有沒有修復它,雖然 – dmikester1

+0

愚蠢的問題,但列EmpID真的存在嗎? – DevelopmentIsMyPassion

回答

0

中的子查詢的FROM子句不能與外部語句相關。我想這就是爲什麼你在'where子句'錯誤中得到未知列'U.EmpID'