|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() ![]() |
Hello les gens,
Je ne suis pas certain de poster au bon endroit mais si je peux avoir une réponse sur le forum c'est bien sur celui d'SQL j'espère. Voila j'ai une requête avec des conditions qui devraient être dans le where et j'aurais aimé convertir la condition un peu à la manière où un : devient: Mes conditions à moi seraient plutôt: Code :
Ce qui devient alors: Code :
(NOT A OR B) AND (A OR ((NOT C OR D) AND (C OR E))) Merci pour toutes vos contributions. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Pourquoi ne pas plutôt utiliser CASE qui est fait pour ça?
|
|
|
10
|
|
|
#3 |
|
Membre éclairé
![]() ![]() |
Apparement le case n'est pas:
- portable - rapide (en comparaison avec une expression booléenne) - maintenable |
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
- portable ... Qu'est ce que vous appelez portable exactement ? car CASE WHEN fait partie intégrante de SQL92 (Cf BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL (SQL-92)), vous le trouverez sur la pluspart (voir meme l'intégralité) des SGBD. -Rapide : Je n'ai a vrai dire jamais eu la curiosité d'analyser la différence de plan d'execution entre un CASE WHEN et une tripoté d'expressions booleennes, ca vaudrait le coup d'y jeter un oeil, mais j'ai de gros doute sur le fait que cela soit moins rapide. - Maintenable : Cela dépend beaucoup de votre facon de coder ... Vous definissez Je l'aurai ecrit genre : (A.B) + (!A.C) (A and B) or (not A and C) Du coup, votre Je l'aurai ecrit genre (A.B) + (C.D) + !((A.B) + (C.D)) . E Ce qui est quand meme beaucoup moins lisible qu'un Code :
A vous de voir
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|||
|
|
10
|
|
|
#5 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
Et si c'est pour se rendre compte au final que c'est l'équivalent d'un CASE que j'aurais compris en 3 secondes, je peux dire que j'aurais de solides doutes sur la volonté du programmeur de l'avoir fait exprès pour rendre son code illisible |
|
|
|
10
|
|
|
#6 |
|
Membre éclairé
![]() ![]() |
Pour ceux qui voudraient approfondir le sujet et polémiquer dessus:
http://weblogs.sqlteam.com/jeffs/arc...11/14/513.aspx Ce qui n'est absolument pas le but de ce post. Merci. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Nous avons le droit de donner une opinion sur ce que vous cherchez a faire, puisque vous postez pour cela ?
Votre lien devoile une facon de penser et donc de coder (qui je pense ne convient deja pas a votre exemple car il s'agit de test binaire et vous etes sur un test a 3 etats) qui ne me convainc pas. Maintenant si nos réponses sont trop polémiques, peut etre vaut il mieux poster votre demande sur le blog en question ...
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
20
|
|
|
#8 | |
|
Membre éclairé
![]() ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
je rajouterai simplement qu'au niveau des perfs ...si dans vos expression booléenne vous avez de jolie substring, like... ca risque de devenir marrant très vite (scannage de table presque obligatoire, je dis "presque" car vous pouvez selon le sgbd implémenter des index spécifique ).
Bref je testerai par deux fois les deux solutions avant d'avoir un avis tranché sur la question.. |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() ![]() |
Cette "manière de faire" répond actuellement à mon besoin après tests. Merci pour tout vos conseils.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com