웹 스토어에 사용자 정의 가능한 제품 속성을 생성합니다. 각 속성은 다른 유형의 데이터를 가질 수 있습니다. 각 데이터 유형은 해당 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 (텍스트 영역)에 대한 조건을 추가 할 때까지 (메신저 부동 인 가격을 확인) 괜찮을 것 같다.
경우 문은 항상 동일한 데이터 형식을 반환 http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html –
그래 덕분에이 문제를 지적. "CASE 식의 기본 반환 형식은 호환 가능한 집계 형식의 모든 반환 값이지만 사용 된 컨텍스트에 따라 달라집니다." –