質問

IMウェブストアにカスタマイズ可能な製品の属性を作成 - 各属性は、データの異なるタイプを有することができ、各データ型は、対応する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がに?いくつかの型等しいときということですか?私はそれがproduct_attribute_valuesテーブルに保存されているとして、それが値を返すようにしたいです。 現在、私は、BLOBを毎回取得します。

万一Iの使用タイプキャストまたは私が知らないことをいくつかの舞台裏魔法があります、または多分いくつかのより良い代替手段?

があります

EDITます:

すべて私がTEXT(テキストエリア)のための条件を追加するまでOKAY(フロートであるイムチェック価格)のようです。

正しい解決策はありません

他のヒント

あなたには、いくつかのクエリのブラウザを使用しているようです。 「パテ」を介して、このコマンドを実行してみます。

また、このようなあなたの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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top