Webストアでカスタマイズ可能な製品属性を作成しています-各属性は異なるタイプのデータを持つことができ、各データタイプは対応する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(textarea)の条件を追加するまで、すべてOKAY(フロートの価格をチェックしています)のようです。