2016-10-18 1 views
1

다른 열 값이 null인지 여부에 따라 내용이 가변적 일 수있는 별칭 열 eventTitle을 반환해야합니다. 그 별칭의 값을 사용하여 다른 값을 연결하여 다른 별칭 title을 반환해야합니다.MySQL에서 CONCAT에 대한 별명을 사용하려면 어떻게해야합니까?

$sql = 'SELECT 
     CASE WHEN session.title IS NOT NULL 
      THEN session.title 
      ELSE course.title 
     END AS eventTitle, 
     CONCAT(eventTitle, "\n", session.city, ", ", session.state) AS title, 
     FROM session 
     LEFT JOIN course ON course.id = session.course_id'; 

나는 다음과 같은 오류가 발생합니다 : :

Unknown column 'eventTitle' in 'field list'

답변

4

같은 SELECT 절에 열 별칭을 참조 할 수 없습니다

나는 다음과 같은 쿼리를 실행하고 있습니다. 하위 쿼리에 넣습니다. 또한 CASE 대신 IFNULL (또는 더 표준 인 COALESCE)을 사용할 수 있습니다.

또는 동일한 검색어로 IFNULL을 두 번 사용할 수 있습니다.

SELECT IFNULL(session.title, course.title) AS eventTitle, 
     CONCAT(IFNULL(session.title, course.title), "\n", session.city, ", ", session.state) AS title 
FROM session 
LEFT JOIN course ON course.id = session.course_id 

나는 널 체크 또는 LEFT JOIN 거꾸로 생각합니다. LEFT JOIN을 사용하면 일치하는 것이 없을 때 두 번째 표의 열에 NULL이 표시됩니다. 따라서 NULL이되는 열은 이 아니라 session.title이됩니다.

+0

의견을 보내 주셔서 감사합니다. 불행히도 실행하려고 할 때 '필드 목록'에 '알 수없는 열'session.city '가 표시됩니다. – zeckdude

+0

죄송합니다. 하위 쿼리에서 해당 열을 반환해야합니다. – Barmar

+0

그래, 그건 분명히 효과가 있었다. 나는 두 번째 방법이 더 쉽다고 생각한다. 감사! – zeckdude

관련 문제