Question

Im créant des attributs produit personnalisable dans une boutique en ligne. - chaque attribut peut avoir différents types de données, chaque type de données est stocké dans une colonne distincte en utilisant le type de données correspondant mysql

J'ai une requête comme:

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 (...)

Maintenant, le problème est que lorsque attribute_types.type équivaut à? Certains type? Je veux retourner une valeur telle qu'elle est stockée dans la table de product_attribute_values. À l'heure actuelle, je reçois BLOb chaque fois.

Dois-je utiliser le type-casting ou il y a quelque chose de magique derrière la scène que je ne sais pas à propos, ou peut-être il y a quelque meilleure alternative?

EDIT:

Tout semble bien se passer (im prix de vérification qui est float) jusqu'à ce que j'ajouter une condition pour TEXT (textarea).

Pas de solution correcte

Autres conseils

Il semble que vous utilisez un certain navigateur de requête. Essayez d'exécuter cette commande par 'Putty'.

En outre, pour obtenir la sortie correcte, même dans le navigateur de requête, incluez fonction CAST dans votre déclaration de cas comme cela.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top