2012-11-21 6 views
3

표의 field_value 필드가 NULL인지 여부에 따라 결과 집합에 열을 추가하고 싶습니다.값이 null 인 경우 열 추가

SELECT field_id, (
    SELECT field_value 
    FROM employee_field_info 
    WHERE employee_id = '1' 
    AND field_id = persona_fields.field_id 
) AS field_value, ( 
    SELECT field 
    FROM FIELDS WHERE id = persona_fields.field_id 
) AS field_name 
FROM persona_fields 
WHERE persona_id = '1' 

난 할 수 있기를 원하는 것은 field_valueNULL 경우 열 (부울 용) TINYINT를 추가하는 것입니다

다음은 작동 내 쿼리입니다.

나는이 시도했다 :

SELECT field_id, (
    SELECT field_value 
    FROM employee_field_info 
    WHERE employee_id = '1' 
    AND field_id = persona_fields.field_id 
) AS field_value, ( 
    SELECT field 
    FROM FIELDS WHERE id = persona_fields.field_id 
) AS field_name, 
IF(field_value IS NULL, "0","1") AS value_bool 
FROM persona_fields 
WHERE persona_id = '1' 

그러나 그것은 단지에서 "알 수없는 열 'FIELD_VALUE'와 함께 온다 '필드의 목록입니다.' 어쨌든 내가하려는 일을 성취 할 수 있습니까? 아니면 운이 좋지 않습니까?

답변

2

하위 항목에서 상위 SELECT의 열을 참조 할 수 없습니다. 하위 선택은 기본적으로 단독으로 실행이됩니다해야 할 일은 당신의 쿼리를 수행하는 것은 매우 복잡하고 어려운입니다 JOIN으로이를 다시 쓰고, 내가 불완전 생각, 그래서는 해결책을 대략 수 있습니다 여기에

는 예제 :...

SELECT field_id, 
    employee_field_info.field_value, 
    IF(employee_field_info.field_value IS NULL, "0","1") AS value_bool 
    FROM persona_fields 
    LEFT JOIN employee_field_info ON employee_field_info.field_id=persona_fields.field_id 
    WHERE employee_id=1 
+0

그건 본질적으로 필요한 것입니다. 감사! – smarble

0

나는 대답이 여기 있다고 생각합니다. 당신은 ava가 아닌 필드를 얻으려고합니다. field_list에 기재하십시오. 필드가 아직 커밋되지 않은 DB 개발 도구를 사용하고 있기 때문에이 오류가 발생하는 경우가 있습니다.

귀하의 질문에 대한 : 그것은 간단한 결과에 대한 이러한 하위 쿼리를 피하는 것이 좋습니다.

관련 문제