Probleme requete SQl SERVER 2005
Résolu/Fermé
Neyte
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
-
Modifié par Neyte le 10/06/2010 à 15:18
sapma Messages postés 168 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 7 juin 2011 - 10 juin 2010 à 18:27
sapma Messages postés 168 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 7 juin 2011 - 10 juin 2010 à 18:27
A voir également:
- Probleme requete SQl SERVER 2005
- Money 2005 - Télécharger - Comptabilité & Facturation
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Filezilla server - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
6 réponses
sapma
Messages postés
168
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2011
5
10 juin 2010 à 16:01
10 juin 2010 à 16:01
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
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
10 juin 2010 à 15:23
10 juin 2010 à 15:23
where int_num_article IN (SELECT int_num_article FROM article)
Tout simplement...
Tout simplement...
sapma
Messages postés
168
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2011
5
Modifié par sapma le 10/06/2010 à 15:33
Modifié par sapma le 10/06/2010 à 15:33
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 ...
tant que c'est un Entier on peut par exemple la faire en Dichotomique ...
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
10 juin 2010 à 15:35
10 juin 2010 à 15:35
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...)
sapma
Messages postés
168
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
7 juin 2011
5
10 juin 2010 à 15:38
10 juin 2010 à 15:38
à la limitte je pense qu'il a classé les articles par catégorie et donc ajouter une condition ou deux dans select.
Neyte
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
10 juin 2010 à 15:41
10 juin 2010 à 15:41
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 ;)
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 ;)
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
10 juin 2010 à 15:44
10 juin 2010 à 15:44
AND int_num_article=800 serait plus approprié...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Neyte
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
10 juin 2010 à 15:47
10 juin 2010 à 15:47
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"
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"
Breub62
Messages postés
2989
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
369
10 juin 2010 à 15:49
10 juin 2010 à 15:49
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+
Neyte
Messages postés
115
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
8 mai 2012
16
10 juin 2010 à 15:51
10 juin 2010 à 15:51
ok c'est pas grave merci quand meme.
@+
@+
10 juin 2010 à 16:07
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
10 juin 2010 à 16:35
Modifié par sapma le 10/06/2010 à 16:44
10 juin 2010 à 17:00
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
10 juin 2010 à 17:22
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>