2012-09-28 3 views
3

왜 작동하지 않습니까? ># 1054 - 'where 절에서 알 수없는'max.ACCESS_DATE_TIME '열

#1054 - Unknown column 'user_log_max.ACCESS_DATE_TIME' in 'where clause' 

그것은 밖으로 복용 -

SELECT `user_log`.`COMPUTER_NAME`, `user_log`.`LOCATION` 
FROM `user_log`, `user_log_max` 
WHERE `user_log_max`.`USER_NAME` = `user_log`.`USER_NAME` AND `user_log_max`.`ACCESS_DATE_TIME` = `user_log`.`ACCESS_DATE_TIME` 

이 오류 :

#1054 - Unknown column 'max.ACCESS_DATE_TIME' in 'where clause' 

내가 별칭을 가지고 시도 :

SELECT `user_log`.`COMPUTER_NAME`, `user_log`.`LOCATION` 
FROM `user_log`, `user_log_max` as max 
WHERE max.`USER_NAME` = `user_log`.`USER_NAME` AND max.`ACCESS_DATE_TIME` = `user_log`.`ACCESS_DATE_TIME` 

는 나는 다음과 같은 오류가 발생합니다 눈금 ... 왜?

편집 :

user_log_max: 
USER_NAME  varchar(20)  
ACCESS_DATE_TIME timestamp 

user_log가 같은 열이 포함 플러스 COMPUTER_NAME 및 위치를 포함하여 더 많은 몇

이 user_log_max이

SELECT `USER_NAME`, MAX(`ACCESS_DATE_TIME`) FROM `user_log 
GROUP BY `USER_NAME` 

기본적으로 user_log에이 쿼리를 실행에서 모든 데이터를 포함 내가 뭘하려는 건 MAX ... GROUP BY 내 GROUP BY 이외의 항목을 선택하는 것입니다.

편집 2 : 나는 user_log_max을 만드는거야 방법

다음

은 ->

당신의 CREATE TABLE 쿼리, 당신은 MAX() 집계 열 별칭을 제공해야합니다에서
CREATE TABLE `user_log_max` 
SELECT `USER_NAME`, MAX(`ACCESS_DATE_TIME`) FROM `user_log` 
GROUP BY `USER_NAME` 
+3

on에. – RedFilter

+0

'user_log_max' 테이블에'ACCESS_DATE_TIME'이 포함되어 있습니까? –

+0

오류 메시지에 백틱이 표시되지 않는다고 걱정하지 마십시오. 우리는 테이블 구조를 볼 필요가 있습니다. –

답변

1

:

CREATE TABLE `user_log_max` 
    SELECT 
    `USER_NAME`, 
     /* Alias this calculated value as ACCESS_DATE_TIME */ 
     MAX(`ACCESS_DATE_TIME`) AS `ACCESS_DATE_TIME` 
    FROM `user_log` 
    GROUP BY `USER_NAME` 

당신이 해낸 방식대로, 열 이름은 전체 문자열 MAX(ACCESS_DATE_TIME)과 같아야하는데, 이것은 분명히 매우 혼란 스럽습니다. 당신이해야 할 시도로

지금, 당신은 그것을 조회 할 수 있습니다

/* The column ACCESS_DATE_TIME now exists in user_log_max, so this will work */ 
SELECT `user_log`.`COMPUTER_NAME`, `user_log`.`LOCATION` 
FROM `user_log`, `user_log_max` 
WHERE `user_log_max`.`USER_NAME` = `user_log`.`USER_NAME` AND `user_log_max`.`ACCESS_DATE_TIME` = `user_log`.`ACCESS_DATE_TIME` 
+0

당신 말이 맞아 ...이게 효과가있는 것처럼 보입니다! 고맙습니다. – hacket

0

변경 스키마를 설명하십시오 where

SELECT `user_log`.`COMPUTER_NAME`, `user_log`.`LOCATION` 
FROM `user_log`, `user_log_max` 
ON `user_log_max`.`USER_NAME` = `user_log`.`USER_NAME` AND `user_log_max`.`ACCESS_DATE_TIME` = `user_log`.`ACCESS_DATE_TIME`; 
관련 문제