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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.

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