begin process at 2012 05 26 18:27:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une procédure stockée

 > 

Filtrer si paramètre est different de nulle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Filtrer si paramètre est different de nulle

mercredi 19 octobre 2005 à 11:14:00 | Filtrer si paramètre est different de nulle

jesusonline

Membre Club Administrateur CodeS-SourceS

Bonjour, j'ai 2 problèmes avec une procédure stockée sur SQL server 2000

D'une part, j'aimerais filtrer mes articles par catégorie, si @IDCat est different de NULL. C'est à dire si je ne met aucun paramètre, cela me retourne tous les articles des differentes catégories.

D'autre part, j'aimerais si @ShowInactive = False que cela me renvoie seulement les articles Actifs et contenu dans des catégories Actives, sinon (@ShowInactive = True) que cela me renvoie tous les articles, qu'ils soient actifs ou non.

Je pourrais faire ceci avec plusieurs procédure stockée, mais je pense qu'il est preferable de faire ca avec une seule.

Voici la procédure en question.

ALTER procedure [dbo].[SP_GetArticlesSummary]
(
 @IDCat int = NULL,
 @ShowInactive bit = False
)
as

SELECT     Table_Articles.IDArticle, Table_Articles.IDCat, Table_Articles.[Date], Table_Articles.Title, Table_Articles.Article, Table_Articles.Summary,
                      Table_Articles.IDAuthor, Table_Authors.Pseudo, Table_Authors.AuthorUrl, Table_Authors.Nom, Table_Authors.Prenom, Table_Authors.email,
                      Table_ArticleCategories.CatName, Table_ArticleCategories.isActive, Table_ArticleCategories.CatDescription, Table_ArticleCategories.Position
FROM         Table_Articles INNER JOIN
                      Table_Authors ON Table_Articles.IDAuthor = Table_Authors.IDAuthor INNER JOIN
                      Table_ArticleCategories ON Table_Articles.IDCat = Table_ArticleCategories.IDCat
WHERE   (
  Table_ArticleCategories.isActive = 'True' and
  Table_Articles.IDCat = @IDCat and
  Table_Articles.isActive = 'True'
  )


Merci



Cyril - MVS - MCP ASP

jeudi 20 octobre 2005 à 00:52:15 | Re : Filtrer si paramètre est different de nulle

nhervagault

Administrateur CodeS-SourceS
Salut

Je ne pense pas que cette operation est possible
Pour la clause where

Elle est possible pour la clause select order et group by

Avec un operation du style

alter procedure
essai ( @filtre  int)
as
BEGIn

select * from dossier
order by
case
when not @filtre is null then
 id_dossier 
else
 dossier
end
 
END


Dans le groupe by
Tu peux utiliser les operations binaire pour faire des regroupements parametres.

Exemple

select max(id_dossier),max(dossier) from dossier
group by
case
when  @filtre & 1  = 1 then
 id_dossier 
when @filtre & 2 = 2 then
 dossier
end
 
END

ici 1 2 Et 3
1 --> group by id_dossier
2 --> group by  dossier
3 --> group by id_dossier ,  dossier

Alors pour ton probleme
Je ne vois que le truc suivant

DECLARE SQL as varchar(8000)
SET SQL = 'SELECT * from matable'
IF ....
SET SQL = ' WHERE ...
ELSE
SET SQL = SQL + ' WHERE ...

EXEC(SQL)

Esperant avoir guider ta reflexion



Voila


voila
     
jeudi 20 octobre 2005 à 20:05:26 | Re : Filtrer si paramètre est different de nulle

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Merci de ta réponse,

finalement aprés beaucoup de reflexion j'ai réussit à faire ca avec des conditions :

WHERE   (
   (
    (Table_Articles.isActive = 'True' OR @ShowInactive = 'True')
   and
    (Table_ArticleCategories.isActive = 'True' OR @ShowInactive = 'True')
   )
  and
   (
    Table_Articles.IDCat = @IDCat
   OR
    @IDCat IS NULL
   )
  )


J'ai fait quelques test et ca fonctionne :)

Merci quand meme de t'etre interessé a mon problème


Cyril - MVS - MCP ASP


Cette discussion est classée dans : table, articles, idcat, authors, articlecategories


Répondre à ce message

Sujets en rapport avec ce message

Jointure SQL! [ par nabilG ] Bonjour,J'ai une table ARTICLE avec 2000 articles ( No_art, Code_art, Quantite_art,...) et une table SORTIE avec plusieurs enregistrements de sorties Annonce [ par yanne1985 ] salute je suis entrain de realiser un site des annonce et je demande votre aide pour la conception de la base de donnée voila: j'ai plusieur table ou CREATE TABLE [ par captusite ] BonjourJe cherche a creer une table qui prendra comme nom la valeur 'NOM' de la table Articles pour la clause WHERE Id=@IdGrilleVoici ce que j'ai pour Drop all table ? [ par Zart ] Bonjour,Je travaille sur une base PgSQL. Je voulais savoir si y avait une instruction pour vider le contenu d'une base totalement.La première chose qu triggers [ par exyacc ] salut, je voudrais faire un triggers sur une table "transac" qui ajoute ds une table "transac2"  des qu'il y a une ligne d'ajouter a "transac" j'ai m Import de données depuis un fichier Excel [ par BUZZ2K ] Bonjour,Afin d'allimenter ma base de donnees (une seule table en fait), je dispose d'un fichiers excel contenant les informations voulues.J'aurai aime Requete pour le classement d'une table [ par superbaloo78 ] Bonjour,J'ai une table mysql avec les champs suivant ...id,nom,tag,pointsJe souhaite sortir le nom, le tag, les points et le classement dans ma table. Arrondi !??? [ par djagger ] Salut !Dans une table, j'ai un FLOAT(20,20)Lorsque je fais :UPDATE maTable SET monFloat = 4.89;je récupère le résultat :4.88999986648559570000<IMG src Copie d'une table [ par Jbensimoh ] salut je veux copier une table en sql(j'utilise MSSQL SERVER 2000) ce que je veux c'est de copier une table (données+Structure) en utilisant une requ exécuter une requête stockée dans une table [ par chtitena ] Bonjour,Quekqu'un sait-il comment on peut faire pour exécuter une requête dont le script est stocké dans une table Oracle?Merci pour votre aide


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales