Problème avec les paramètres SQL Server
Bonjour,
J'ai deux requêtes qui ont l'air identiques mais qui ne me retournent pas la même chose :
Requête 1 :
Code:
1 2 3 4 5 6 7 8 9
|
SELECT DISTINCT Fournisseur.id_fournisseur,Fournisseur.nom
FROM produit Produit
INNER JOIN Fournisseur_Marque on Fournisseur_Marque.id_marque=Produit.Id_marque
AND Fournisseur_Marque.id_structure IN (8,3,2,1)
INNER JOIN Fournisseur on Fournisseur.id_fournisseur=Fournisseur_Marque.id_fournisseur
INNER JOIN Fournisseur_structure ON Fournisseur_structure.id_fournisseur=Fournisseur_Marque.id_fournisseur
and Fournisseur_structure.id_structure IN (8,3,2,1)
WHERE Produit.id_produit=5137416 AND (Fournisseur.abandon = 0) |
Requête 2 :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
declare @structures_parents varchar; set @structures_parents = '8,3,2,1';
declare @id_produit int; set @id_produit = 5137416;
SELECT DISTINCT Fournisseur.id_fournisseur,Fournisseur.nom
FROM produit Produit
INNER JOIN Fournisseur_Marque on Fournisseur_Marque.id_marque=Produit.Id_marque
AND Fournisseur_Marque.id_structure IN (@structures_parents)
INNER JOIN Fournisseur on Fournisseur.id_fournisseur=Fournisseur_Marque.id_fournisseur
INNER JOIN Fournisseur_structure ON Fournisseur_structure.id_fournisseur=Fournisseur_Marque.id_fournisseur
and Fournisseur_structure.id_structure IN (@structures_parents)
WHERE Produit.id_produit=@id_produit AND (Fournisseur.abandon = 0) |
J'ai résussi à identifier le problème.. mais je n'ai pas la solution :
en fait le problème vient du morceau de requête suivant :
Code:
Fournisseur_Marque.id_structure IN (@structures_parents)
en effet, @structures_parents est un varchar : je ne sais pas comment le moteur SQL 2005 arrive à comprendre la requête mais il y arrive pourtant, mais pas très bien puisqu'il retourne un nombre différents d'enregistrements. 8O
Si quelqu'un connait la solution... ou alors comment transformer un varchar en une chaîne d'entier(peut être cela résoudra-t-il mon problème)?
Merci d'avance