Requete avec IF

gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007 - 27 mars 2006 à 18:35
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 - 28 mars 2006 à 13:22
Bonjour,

J'aimerais faire une requete SQL avec un WHERE conditionel. Pour cela il faut une condition IF dans la requete.
Je voudrais faire un truc du genre :

SELECT *
FROM table
IF table.id ==1
BEGIN
WHERE id == 1
END

Est ce possible?

Merci d'avance.

17 réponses

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 09:39
Oui, c'est possible....

Et ton problème vient d'ou exactement ? :)

Mindiell Software
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 09:59
Bonjour,

Mon problème c'est que je connais pas la syntaxe pour une base de données sql server 2005 express et que sur internet je trouve rien. L'exemple que j'ai donné est la syntaxe que je pensais être juste mais apparement c'est pas le cas.

Merci
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 10:08
Voyons, que peut dire google là-dessus ?

Alors :
http://www.databasejournal.com/features/mssql/article.php/3087431
http://builder.com.com/5100-6388-5078041.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_5t9v.asp

Tu verras qu'il est mieux d'utiliser un CASE .. WHEN...

Mais si tu expliquais les données finales que tu souhaites obtenir et les données initiales, je suis sur qu'on pourrait t'aider plus efficacement :)

Mindiell Software
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 11:58
Alors je vais essayer d'être plus précis en expliquant le tout.

Je fais un site en ASP.net 2.0. J'ai une gridview et des dropdownlist qu'on va dire associé à cette gridview permettant de faire des recherches.

Prenont la première dropdownlist qui permet de faire une recherche par rapport à l'ID d'une affaire. Le premier élément de la dropdownlist est un élément que j'ai rentré àla main dont le texte est "toute" et la valeur -1.

Donc dans la requete de ma gridview, il me faut pouvoir faire une requete SQL qui contient une clause where si la valeur selectionner de la dropdownlist est différent de -1 et ne pas faire apparaitre la clause where si la valeur est égale à à -1.

La requete est donc de cette forme :

SELECT *
FROM Affaire
IF @Search != -1
BEGIN
WHERE Affaire.Id = @Search
END

où @Search est un paramètre venant d'ASPet correspondant à la valeur de l'element selectionner dans la dropdownlist.

Voilà j'espere avoir été clair
0

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

Posez votre question
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 12:09
Très clair !

Fais donc ca en programmation :
requete = "SELECT * FROM Affaire "
if (dropdownlist.value>-1)
requete requete & " WHERE Affaire.Id " & dropdownlist.value
end if

Et voila :)

Pourquoi se compliquer la vie ?
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 12:15
oui je sais que je peux faire ça comme ça mais j'aurais voulu intégrer ça directement dans le SQL pour des questions de performances et surtout ça permets de pas surcharger mon code c #.

Si tu me dis qu'il n'ya pas d'autres solutions, je ferais comme ça mais j'aimerais néanmoins savoir comment faire pour mettre du if dans ma requete SQL.

Merci pour tes réponses
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 12:21
et puis surtout je sais pas faire ça en c#. Faire une requete je sais faire mais apres la binder avec ma gridview ça devient obscure pour moi
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 12:24
niveau performances, ca ne fait aucune différence. C'est plus clair de mettre ca dans le code, je trouve, car c'est inhérent à ton programme.

Sinon, utilise ca :
If @Search=-1
BEGIN
SELECT *
FROM Affaire
END
ELSE
BEGIN
SELECT *
FROM Affaire
WHERE Affaire_id = @Search
END
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 12:26
Et avec la mise en page :

IF @Search=-1
BEGIN
SELECT *
FROM Affaire
END
ELSE
BEGIN
SELECT *
FROM Affaire
WHERE Affaire_id = @Search
END
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 12:35
alors il me dis la variable scalaire "@Search" doit etre déclaré :|

BIzarre....

merci de ton aide
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 12:45
ok j'ai rien dis ça marche nikel. Merci de ta précieuse aide :)
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 12:57
ah oui mais non .... :s

en fait ce qui m'arrangerai c'est de pourvoir faire une condition sur le WHERE uniquement et non sur la requete entiere.
J'ai essayer mais ça marche pas :(
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 13:01
Ah ben oui, mais la, c'est pas possible :o)

A mon avis tu te debrouilles mal. L'important c'est de le faire coté programme quand meme. Je vois pas vraiment la difficulté par rapport a ce que tu fais maintenant, non ?
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 13:06
la difficulté c'est que je sais pas faire. Je sais créer une requete à la main mais apres je sais pas la binder avec la gridview...
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 13:11
Tu sais faire une procedure stockée ?
Dans ce cas, tu utilies la procedure stockée a la place de la requete dans ton programme, et la procedure stockée tu la crees dans la base.

Sans ca, va sur le forum C# et demande leur ca doit pas etre sorcier :)
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
28 mars 2006 à 13:16
non sais pas faire des procédures stockéesmais j'aimerais
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 mars 2006 à 13:22
Alors direction le forum C#,
et les aides sur Google pour les procedures

;P
0
Rejoignez-nous