programing

오류 코드: 1054:테이블이 있는 경우 '필드 목록'에서 'table_name.column_name' 열을 알 수 없음

lovejava 2023. 7. 8. 10:24

오류 코드: 1054:테이블이 있는 경우 '필드 목록'에서 'table_name.column_name' 열을 알 수 없음

데이터베이스에서 데이터를 가져오기 위해 SQL 쿼리를 실행하려고 합니다.제 질문은 다음과 같습니다.

SELECT user,
      SUM(CASE WHEN sub_status = 'TB' THEN pause_sec END) AS Training_Break,
      SUM(CASE WHEN sub_status = 'SB1' THEN pause_sec END) AS Short_Break_1,
      SUM(CASE WHEN sub_status = 'SB2' THEN pause_sec END) AS Short_Break_2,
      SUM(CASE WHEN sub_status = 'LB' THEN pause_sec END) AS Long_Break
FROM vicidial_agent_log
WHERE event_time >= '2021-04-01' AND
      event_time < '2021-04-17' AND
      sub_status IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY user
HAVING COALESCE(`Training Break`, `Short Break 1`, `Short Break 2`, `Long Break`) IS NOT NULL


이렇게 하면 원하는 결과를 얻을 수 있습니다.결과에 대한 표 출력.사용자 이름을 표시하고 싶지만 다른 테이블에 있습니다.그래서 저는 다음과 같이 여기에 가입했습니다.


SELECT `vicidial_agent_log.user`,
`vicidial_users.full_name`,
      SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'TB' THEN `vicidial_agent_log.pause_sec` END) AS Training_Break,
      SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'SB1' THEN `vicidial_agent_log.pause_sec` END) AS Short_Break_1,
      SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'SB2' THEN `vicidial_agent_log.pause_sec` END) AS Short_Break_2,
      SUM(CASE WHEN `vicidial_agent_log.sub_status` = 'LB' THEN `vicidial_agent_log.pause_sec` END) AS Long_Break
FROM `vicidial_agent_log`
INNER JOIN `vicidial_users` ON `vicidial_users.user`=`vicidial_agent_log.user`
WHERE `vicidial_agent_log.event_time` >= '2021-04-01' AND
      `vicidial_agent_log.event_time` < '2021-04-17' AND
      `vicidial_agent_log.sub_status` IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY `vicidial_agent_log.user`
HAVING COALESCE(`Training_Break`, `Short_Break_1`, `Short_Break_2`, `Long_Break`) IS NOT NULL

그리고 다음과 같은 오류가 발생합니다.

오류 코드: '필드 목록'의 'vicidial_agent_log.user' 열을 알 수 없습니다.


하지만 테이블은 존재합니다.
또한 코드에서 백 틱을 제거하면 다음 오류가 발생합니다.

오류 코드: 'group 문'의 'vicidial_agent_log.user' 열을 알 수 없습니다.


Following are fields of my two Tables and their columns:
>Columns of vicidial_agent_log: [agent_log_id, user, ...]
>Columns of vicidial_users: [user_id, user, pass, full_name, ...]

My desired output should look like https://i.stack.imgur.com/GVeIz.png only with an addition of one column with a name on it.


This is the first professional project I am building and any sort of help will do. I must be making a beginners mistake that might be small. I am not sure if there is problem with my logic or concept. I have researched into other posts but it doesn't seem to work for me. Any sort of help will go a long way.

당신의 식별자에서 벗어나지 마세요!그리고 가명을 사용하세요!제가 아까 답변에서 말씀드린 것 같습니다.그래서:

SELECT al.user, u.full_name,
      SUM(CASE WHEN al.sub_status = 'TB' THEN al.pause_sec  END) AS Training_Break,
      SUM(CASE WHEN al.sub_status = 'SB1' THEN al.pause_sec END) AS Short_Break_1,
      SUM(CASE WHEN al.sub_status = 'SB2' THEN al.pause_sec END) AS Short_Break_2,
      SUM(CASE WHEN al.sub_status = 'LB' THEN al.pause_sec END) AS Long_Break
FROM vicidial_agent_log al JOIN
     vicidial_users u
     ON u.user = al.user
WHERE al.event_time >= '2021-04-01' AND
      al.event_time < '2021-04-17' AND
      al.sub_status IN ('TB', 'SB1', 'SB2', 'LB')
GROUP BY al.user, u.full_name;

HAVING이 버전에는 절이 필요하지 않습니다. 그렇지 않은 경우al.pause_sec그럴 수도 있겠지요NULL만약 그것이 가능하다면, 그냥 추가하세요.al.pause_sec IS NOT NULL에게WHERE

당신의 질문의 문제는

`vicidial_agent_log.user`

다음과 같은 열 이름을 참조합니다..당신의 의도는 다음과 같습니다.

`vicidial_agent_log`.`user`

하지만 다음과 같은 경우에 백스틱을 사용할 필요가 있습니까?

vicidial_agent_log.user

또는:

al.user

테이블 별칭이 정의된 경우.

언급URL : https://stackoverflow.com/questions/67654776/error-code-1054-unknown-column-table-name-column-name-in-field-list-when-t