Probleme requete SQl SERVER 2005

Résolu
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   -  
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   - 10 juin 2010 à 18:27
Bonjour,

voila , j'ai un soucis de syntaxe je pense :

ce que je voudrais faire :

where int_num_article IN (tous mes numéros d'articles)

mais je ne parviens pas à trouver de syntaxe permettant de faire sa.

merci pour votre aide.

cordialement


A voir également:

6 réponses

sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
CREATE   PROCEDURE dbo.NomProcedure
(
	@Var1 as int
                @... autre variables
)
AS
IF @Var1 = 1 

	BEGIN
		bla bla

		WHERE  bla bla
		AND int_num_article IN (SELECT int_num_article FROM article) 

	END
ELSE
	BEGIN
		bla bla

		WHERE  bla bla
		AND int_num_article = 800
	END
2
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   16
 
Merci beaucoup Sapma ,

C'est donc la seule solution?
Pas moyen d'insérer le if dans mon where histoire de réduire ma requete?

sinon avec ce que tu m'as fourni sa fonctionne merci beaucoup
0
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
Tu ne veux pas utiliser les deux conditions avec un OR ?
0
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
sinon : tu peux utiliser CASE
CREATE   PROCEDURE dbo.NomProcedure  
(  
 @Var1 as int  
                 
)  
AS  
 BEGIN  
            bla bla  
            WHERE   bla bla  
                CASE WHEN IsNumeric(@Var1) = 1 THEN  
                             AND int_num_article IN (SELECT int_num_article FROM article)    
                 ELSE   
                            AND int_num_article = 800  
                 END                                       
 END  

0
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   16
 
Avec le case j'ai des erreurs :

Syntaxe incorrecte vers le mot clé 'CASE'.

Syntaxe incorrecte vers le mot clé 'ELSE'.

voici mon code :

CASE WHEN IsNumeric(@intFDP) = 1 THEN
AND int_num_article IN (SELECT int_num_article FROM article)
ELSE
AND int_num_article = 800
END
0
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
essaye ca stp

CREATE PROCEDURE dbo.NomProcedure
(
@Var1 as int

)
AS
BEGIN
bla bla
WHERE bla bla AND int_num_article IN
CASE WHEN IsNumeric(@Var1) = 1 THEN
SELECT int_num_article FROM article
ELSE
800
END
END

</code>
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
where int_num_article IN (SELECT int_num_article FROM article)



Tout simplement...
1
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
on peut optimiser ? car une select de tous les articles c lourd

tant que c'est un Entier on peut par exemple la faire en Dichotomique ...
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Pas le choix si tu veux vérifier qu'un num_article se trouve dans ta table tu dois forcément les comparer avec un select. Et un select c'est pas bien lourd non plus (enfin je sais pas combien tu a d'enregistrements mais je pense pas des millions...)
0
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
à la limitte je pense qu'il a classé les articles par catégorie et donc ajouter une condition ou deux dans select.
0
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   16
 
Merci beaucoup Breub62.

j'ai une seconde question vous pourriez peut etre m'aider.

en fait c'est pour une procédure stockée :

@var1

'
'
'
AND int_num_article IN (@var1)

Quand j'appel ma procédure stockée avec en parametre "SELECT int_num_article FROM article" , j'ai un conflit Numeric/varchar(normal)

donc , ce que je voulais faire c'est dans ma procédure un truc du genre

if @var1 = 1
//Ajout de ma clause AND int_num_article IN (SELECT int_num_article FROM article)
else
//ajout de ma clause AND int_num_article IN(800)

mais je ne trouve pas la syntaxe adequate

Si tu as une solution sa serait super ;)
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
AND int_num_article=800 serait plus approprié...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   16
 
En effet ,
mais y'a t-il une syntaxe spécifique pour insérer un If dans ma clause where :

where "première condition"
if @var1 = x

alors "AND deuxieme condition avec parametre1"

sinon

"And deuxieme condition avec parametre 2"
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
J'ai jamais trop touché aux procédures stockées. Je gère tout par Php... Désolé. Refait un post pour cette question tu sera surement mieux servi.. A+
0
Neyte Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   16
 
ok c'est pas grave merci quand meme.
@+
0