2010-03-30 7 views
0

웹 스토어에 사용자 정의 가능한 제품 속성을 생성합니다. 각 속성은 다른 유형의 데이터를 가질 수 있습니다. 각 데이터 유형은 해당 mysql 데이터 유형을 사용하여 별도의 열에 저장됩니다.mysql 케이스 - 언제 - 잘못된 - 잘못된 데이터 타입 (블롭)을 반환

SELECT 
products.id AS id, 
products.sku AS sku, 
products.name AS name, 
products.url_key AS url_key, 
attributes.name AS attribute, 

CASE 
    WHEN `attribute_types`.`type` = 'text' 
     THEN product_attribute_values.value_text 
    WHEN `attribute_types`.`type` = 'float' 
     THEN product_attribute_values.value_float 
    WHEN `attribute_types`.`type` = 'price' 
     THEN product_attribute_values.value_float 
    WHEN `attribute_types`.`type` = 'integer' 
     THEN product_attribute_values.value_integer 
    WHEN `attribute_types`.`type` = 'multiple' 
     THEN product_attribute_values.value_text 
    WHEN `attribute_types`.`type` = 'dropdown' 
     THEN product_attribute_values.value_text 
    WHEN `attribute_types`.`type` = 'date' 
     THEN product_attribute_values.value_date 
    WHEN `attribute_types`.`type` = 'textarea' 
     THEN product_attribute_values.value_textarea 
END as value 

from (...) 

이제, 문제는 때 attribute_types이다 :

내가 좋아하는 쿼리가 되세요. type은? some-type? 나는 그것이 product_attribute_values 테이블에 저장된 값을 반환하기를 원한다. 현재 BLOB가 항상 발생합니다.

유형 캐스팅을 사용해야합니까, 아니면 내가 알고 싶어하지 않는 배후의 마술이 있습니까, 아니면 더 좋은 대안이 있을까요?

편집 :

모든 것은 내가 TEXT (텍스트 영역)에 대한 조건을 추가 할 때까지 (메신저 부동 인 가격을 확인) 괜찮을 것 같다.

+0

경우 문은 항상 동일한 데이터 형식을 반환 http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html –

+0

그래 덕분에이 문제를 지적. "CASE 식의 기본 반환 형식은 호환 가능한 집계 형식의 모든 반환 값이지만 사용 된 컨텍스트에 따라 달라집니다." –

답변

0

일부 쿼리 브라우저를 사용중인 것 같습니다. '퍼티'를 통해이 명령을 실행 해보십시오.

또한 쿼리 브라우저에서도 올바른 결과를 얻으려면 다음과 같이 CASE 문에 CAST 함수를 포함 시키십시오.

CAST(
CASE 
WHEN `attribute_types`.`type` = 'text' 
    THEN product_attribute_values.value_text 
WHEN `attribute_types`.`type` = 'float' 
    THEN product_attribute_values.value_float 
WHEN `attribute_types`.`type` = 'price' 
    THEN product_attribute_values.value_float 
WHEN `attribute_types`.`type` = 'integer' 
    THEN product_attribute_values.value_integer 
WHEN `attribute_types`.`type` = 'multiple' 
    THEN product_attribute_values.value_text 
WHEN `attribute_types`.`type` = 'dropdown' 
    THEN product_attribute_values.value_text 
WHEN `attribute_types`.`type` = 'date' 
    THEN product_attribute_values.value_date 
WHEN `attribute_types`.`type` = 'textarea' 
    THEN product_attribute_values.value_textarea 
END 
AS CHAR) as value 
관련 문제