حالة MySQL - عند - ثم - إرجاع نوع البيانات الخاطئة (Blob)

StackOverflow https://stackoverflow.com/questions/2542571

سؤال

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 في كل مرة.

هل يجب أن أستخدم نوعًا ما أو هناك بعض السحر من وراء الكواليس لا أعرف عنه ، أو ربما يكون هناك بديل أفضل؟

تعديل:

يبدو أن كل شيء على ما يرام (أنا أتحقق من السعر الذي يطفو) حتى أضيف شرطًا للنص (Textarea).

لا يوجد حل صحيح

نصائح أخرى

يبدو أنك تستخدم بعض متصفح الاستعلام. حاول تنفيذ هذا الأمر من خلال "المعجون".

أيضًا ، للحصول على الإخراج الصحيح حتى في متصفح الاستعلام ، قم بتضمين وظيفة المصبوب في بيان الحالة مثل هذا.

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