|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Bonjour,
Elements de ma requête : 1) Table : MaTable1 2) Résultat à afficher : T1, T2 3) Conditions : c1, c2, c3, c4, c5 J’ai 5 conditions : c1, c2, c3, c4, c5 Besoin : Je dois trouver T1, T2 selon toutes les conditions possibles (Toutes les permutations possibles entre c1,c2,c3,c4,c5) ce qui me fait 120 combinaisons possibles, y’a-t-il une meilleurs façon de faire que ça : Code :
Code :
Code :
Code :
Code :
Code :
|
||||||||||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 778 ![]() |
Bonjour,
Code :
__________________
Le Porc est un loup pour le Porc. |
||
|
|
00
|
|
|
#3 | |||
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Citation:
mais je précise que le résultat de la requête nous fournira plusieurs lignes, exemple 20 lignes + 2 colonnes (T1, T2)on ne pourra pas dire quelle ligne correspond à quelle conditions
|
|||
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 778 ![]() |
Selon l'utilisation voulue derrière il est possible de rajouter 5 colonnes à votre requête, une par condition, qui sont cochées si la ligne remplit la condition :
Citation:
Il suffit alors dé créer les colonnes avec un CASE (je ne sais plus la syntaxe exacte mais ça doit ressembler à ça) : Code :
__________________
Le Porc est un loup pour le Porc. |
|||
|
|
00
|
|
|
#5 | |||
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Citation:
En faite j'ai proposé cette idée à mon Chef ... mais il m'a dit qu'il ne voulait pas s'embêter a filtrer sous Excel et à cocher/décocher les oui/non ... et il m'a même dit qu'il y'avait une méthode plus facile avec le CROSS Join ....Sauf qu'il ne m'a pas dit comment ? (je connais le CROSS JOIN mais je ne vois pas ce que ça va avancer de l'utiliser dans ce contexte) ? Merci |
|||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 778 ![]() |
Je ne suis pas un expert SQL, et encore moins du Cross Join, mais cette jointure n'est pas sensée retourner le produit carthésien des tables ?
C'est quoi le but final ? Ou si c'est top secret pour la Nasa, un truc qui permet d'expliquer mieux pour qu'on sache exactement ce qui est attendu.
__________________
Le Porc est un loup pour le Porc. |
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Inscription : août 2009 Messages : 1 013 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 1 696 ![]() |
|
|
|
00
|
|
|
#9 | |
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Citation:
Merci de votre aide
|
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 778 ![]() |
Et bien la solution proposée par Rei Ichido est OK (Remplacer les "WHEN WHEN" par juste "WHEN"), il suffit de l'adapter à votre guise.
__________________
Le Porc est un loup pour le Porc. |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 1 013 ![]() |
|
|
|
00
|
|
|
#12 | |
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Citation:
- Le concept d'univers d'objet dans SQL - Le Datamining (qui aparrement me permettra d'avoir une restitution - De créer un Cube SSAS (ou un power pivot Qu'en pensez-vous ? merci de votre retour. |
|
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 1 696 ![]() |
Citation:
Citation:
En fonction de ce que vous voulez en faire ensuite dans Excel (vous n'avez pas précisé), il peut être judicieux de remplacer cette chaine (C1,C2) par un masque de bits indiquant la ou les condition(s) remplie(s) pour faire du traitement ensuite, mais la requete reste à peu prés la même... |
||
|
|
00
|
|
|
#14 | |||
|
Invité régulier
![]() Inscription : juillet 2010 Messages : 313 ![]() |
Citation:
Sinon je vais effectivement : 1) Mettre C1 - C2 - C3 - C4 - C5 en colonne (dans mon Select) avec le CASE WHEN (oui si ça existe | Non quand ça n'existe pas) 2) Stocker le résultat de ma requête : T1 - T2 - C1 - C2 - C3 - C4 - C5 dans une table temporaire "TableTempo" 3) Lancer une deuxième requête SQL sur ma table temporaire pour trouver les combinaisons possible : Code :
![]() Qu'en pensez-vous ? Merci |
|||
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 1 696 ![]() |
hmmm, comment dire...
Vous pouvez peut-être expliquer à votre manager qu'il n'est pas indispensable de mettre en place des solutions dont la complexité est inversement proportionnelle à la simplicité du problème ! bref... Si j'ai bien compris votre dernière réponse, vous voulez attribuer un code à chaque combinaison possible c'est bien ça ? Et bien c'est ce que je suggérait avec le masque de bits... pour synthétiser, si pour chaque combinaison on attribut 0 ou 1 selon qu'elle est vérifiée ou pas, nous obtenons donc 5 bits, et 5 bits en binaire, ça fait 32 possibilités... si on enlève le cas 00000 qui ne vous intéresse pas, on retombe bien sur vos 31 possibilités... si on considère C5 comme bit de poids le plus fort, et C1 comme bit de poids le plus faible, une ligne qui vérifie les combinaisons 2 et 4 vaut donc 01010 soit 10 en décimal et une ligne qui satisfait les combinaisons 1, 2 et 3 vaut 00111 soit 7 en décimal... Allez, on reprend la requête de Rei Ichido, en la modifiant un peu et on a: Code :
|
||
|
|
20
|
|
|
#16 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 080 ![]() |
À me lire : http://sqlpro.developpez.com/cours/stockageopt/
Cela dit, n'attendez pas de performances de la part d'un tel modèle de données... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
Copyright © 2000-2013 - www.developpez.com