Bonsoir à tous,
Je rencontre actuellement un souci dans l'execution d'une requete.
Le contexte :
1 table T_ITEMS_ITM contenant :
-ITM_ID (int) clef primaire
1 table T_ATTRIBUTS_ATT contenant :
-ATT_ID (int) clef primaire
-ATT_LIBELLE (varchar(20))
1 table TJ_ATT_ITM_VALUES_ATI contenant :
-ITM_ID (int) clef etrangere
-ATT_ID (int) clef etrangere
-ATI_VALEUR (varchar(512))
La dernière table contient en clefs étrangères les clefs primaires des deux précédentes tables ainsi que la valeur lié à l'attribut de l'item spécifié.
les attributs sont (entre autre) PrixVenteTTC et PrixAchatTTC
Ainsi lorsque j'interroge ma table pour récuperer les prix de vente ou d'achat je suis obligé de caster ATI_VALEUR de maniere a pouvoir comparer les valeurs.. Et c'est la que se pose le souci.
J'ai aussi essayer ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 select Item.ITM_ID from T_ITEMS_ITM as Item inner join TJ_ATT_ITM_VALUES_ATI as ValeurPrixVente on ValeurPrixVente.ITM_ID = Item.ITM_ID inner join T_ATTRIBUTS_ATT as AttPrixVente on AttPrixVente.ATT_ID = ValeurPrixVente.ATT_ID inner join TJ_ATT_ITM_VALUES_ATI as ValeurPrixAchat on ValeurPrixAchat.ITM_ID = Item.ITM_ID inner join T_ATTRIBUTS_ATT as AttPrixAchat on AttPrixAchat.ATT_ID = ValeurPrixAchat.ATT_ID where AttPrixVente.ATT_LIBELLE = 'PrixVenteTtc' and cast( ValeurPrixVente.ATI_VALEUR as int) >= 380 and AttPrixAchat.ATT_LIBELLE = 'PrixAchatTtc' and cast( ValeurPrixAchat.ATI_VALEUR as money) >= 180
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select Item.ITM_ID from T_ITEMS_ITM as Item inner join TJ_ATT_ITM_VALUES_ATI as ValeurPrixVente on ValeurPrixVente.ITM_ID = Item.ITM_ID and cast( ValeurPrixVente.ATI_VALEUR as money) >= 380 inner join T_ATTRIBUTS_ATT as AttPrixVente on AttPrixVente.ATT_ID = ValeurPrixVente.ATT_ID and AttPrixVente.ATT_LIBELLE = 'PrixVenteTtc' inner join TJ_ATT_ITM_VALUES_ATI as ValeurPrixAchat on ValeurPrixAchat.ITM_ID = Item.ITM_ID and cast( ValeurPrixAchat.ATI_VALEUR as money) >= 180 inner join T_ATTRIBUTS_ATT as AttPrixAchat on AttPrixAchat.ATT_ID = ValeurPrixAchat.ATT_ID and AttPrixAchat.ATT_LIBELLE = 'PrixAchatTtc'
L'erreur est la suivante :
Msg 245, Niveau 16, État 1, Ligne 3
Échec de la conversion de la valeur varchar 'BA003348' en type de données money.
'BA003348' étant la valeur d'un autre attribut (representant le code de mon produit).
Ce que je ne comprend pas, c'est que le cast tente de s'effectuer sur une valeur d'attribut que je n'ai pas spécifier dans la jointure.
De plus, si je vire la jointure correspondant au prix d'achat, la requête s'exécute sans erreur...
Voila, si quelqu'un pouvait m'aiguiller, je galeres pas mal et je ne comprend absolument pas d'ou vient le probleme ...
Merci beaucoup à tous.
NB: Je suis sous SQL Server 2008 Express Edition
Partager