حالة MySQL - عند - ثم - إرجاع نوع البيانات الخاطئة (Blob)
-
23-09-2019 - |
سؤال
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