Bonjour,
J'ai deux requêtes qui ont l'air identiques mais qui ne me retournent pas la même chose :
Requête 1 :
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 :
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 :
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
Partager