Division de la requête Mysql
J'ai 2 autre requête qui renvoie des valeurs : 1502.00 et 6
SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDABLECUTTERCOST'
)
et
SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDSPOSSIBLE'
)
Je suis en train d'effectuer la division de la requête1/query2 (1502.00/6) qui doit renvoyer la valeur 250.333333
mais la valeur que je reçois est quelque chose comme 0.16666666666666
ci-dessous sont les types qui ont essayé donc pour:
Type 1:
select (a.curVal / b.curVal) as final_count
from (
SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2 AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDABLECUTTERCOST'
)
) a,
(
SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDSPOSSIBLE'
)
) b;
De Type 2:
SELECT replace(CURRENT_VALUE,'$','') / (
SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDSPOSSIBLE'
)
) curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
SELECT ATTRIBUTE_ID
FROM form_attributes
WHERE FORM_ID=6
AND FORM_FIELD_NAME='REGRINDABLECUTTERCOST'
)
à la fois le type de retour 0.166666666666667
ai-je raté quelque chose?
S'il vous plaît poster exemple de schéma pour
POURQUOI conservez-vous vos valeurs numériques en chaînes de caractères??? Je soupçonne que c'est cause de votre chute. Vous essayez de diviser une chaîne de valeur par le nombre, la valeur de la chaîne est convertie (sans beaucoup de succès) pour le nombre premier
Merci Germann Arlington, vous êtes 100% correct, le problème était dû au champ de Chaîne de la valeur dans la base de données a été comme "de 1 500$.00", d'où la requête a été en mesure de choisir "1" au lieu de "1500.00"
form_attributes_values
et form_attributes
, et juste assez de données pour reproduire votre requête, tel qu'il est. Simuler votre fourni des résultats de sélection ne permet pas de reproduire votre problème, si le problème est très probablement dans votre définition de schéma et/ou de requêtes.POURQUOI conservez-vous vos valeurs numériques en chaînes de caractères??? Je soupçonne que c'est cause de votre chute. Vous essayez de diviser une chaîne de valeur par le nombre, la valeur de la chaîne est convertie (sans beaucoup de succès) pour le nombre premier
Merci Germann Arlington, vous êtes 100% correct, le problème était dû au champ de Chaîne de la valeur dans la base de données a été comme "de 1 500$.00", d'où la requête a été en mesure de choisir "1" au lieu de "1500.00"
OriginalL'auteur Warrior | 2012-10-10
Vous devez vous connecter pour publier un commentaire.
Dirait que vous avez un problème avec la première requête seulement, parce que 1 /6 = 0.166666666666667.
OriginalL'auteur SlyChan
OK, donc j'ai juste essayé ceci dans la console SQL sur PHPmyAdmin et j'ai la réponse 250.3333
OriginalL'auteur jampez77
Il n'est pas testé, mais vous devez avoir plus de chance avec l'aide de la SOMME.
Espère que cette aide
OriginalL'auteur jampez77
À la fois du type de requête fonctionne correctement, le problème était dans la valeur, la valeur stockée dans la Base de données est de type String et aussi de la valeur séparées par des virgules (totalisant 1 502.00) au lieu de (1502.00)
OriginalL'auteur Warrior