Requete conditionnelle complexe

Signaler
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010
-
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010
-
Bonjour,
je suis débutant et J'ai une requete conditionnelle multiple a créer
j'ai besoin de recuperer une valeur quand les "phrases" d'attributs A1.B2 (A1 et B2) ou A1/B2 (A1 ou B2) ou encore A1<B1/C1 ( (A1 et B1) ou (A1 et C1) ) ou enfin A1(B1) (A1 et exclusion de la valeur 1 de B ) verifient une condition.
J'ai donc 2 tables une Descriptif avec toutes les attributs de choix et une autres qui contient les phrases d'atributs.
Merci d'avance pour votre aide.
A voir également:

10 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
bonjour

en quoi peut-on t'aider ?
donne au moins la structure des tables, et un petit exemple vu la nature du problème, car la on ne comprend pas trop bien ce que tu veux faire, et surtout ou est ton problème exactement
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

Voici la structure de mes donnees
premiere table
REF Coef Affectation
X 1 A1.B2*
Y 2 A1(B2)*
Z 5 A1<B1/C1*

Deuxieme table
test
A1
B1
C3
D5
....
Ce que je chercherche c'est pour "test" je souhaite toutes les reference qui peuvent composer "test" en croisant les 2 tables.
Merci d'avance
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
J'y vois déjà un peu plus clair, mais c'est pas encore ca...

veux-tu "interpréter" le contenu de ta colonne "Affectation" en langage SQL ?

Que cherche tu a récupérer au final.

peux-tu donner un exemple de ce que tu attend a partir du jeu que tu as fourni

aussi, quel est ton SGBDR ?
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

Effectivement je dois interpreter la colonne "AFFECTATION " pour ressortir les references qui devront composer "test".
Au final j'ai besoin comme resultat d'1 etat tableau contenant
les ref (test) avec leur coef et leur affectation. le but etant de les ré-écrire dans un système la nomenclature "test".
mon SGBD sera soit access ou windev. tout dépend de la complexité de programmation.
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
ta deuxieme table (test) ne contient qu'une seule colonne ?
tu cherche donc a savoir quelle lignes de la premiere table ont une "affectation" qui corespondent au contenu de la table test ?

peux-tu donner le recordset attendu par rapport a l'exemple que tu as fourni, ca aidera a comprendre, et surtout a etre sur que ce qu'on a compris, c'est bien ce qu'il fallait comprendre :)
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

Le recordset correspond l'exemple de la premiere table.
Ce qui faut comprend c'est que j'ai la possibilité extraire une table de l'ensemble des affectations des references.
J'ai une table (test) qui est initialisée par un autre systeme que l'extraction de la première table et je dois créer une nouvelle affectation des references de cette table par anamolie de l'existant.
Faute de connaissances, je me creuse la tête en VBA pour espèrer y arriver.
Merci pour votre aide. et pour votre ecoute.
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
J'ai du mal a comprendre...
Le problème n'est pas simple, et pour pouvoir t'aider, il faudrait un exemple :
1/ données dont tu disposes a l'origine (structure complete des tables si possible)
2/ résultat attendu a partir de ces données

ca permettra de comprendre le problème dans un premier temps, et de tester aussi avant de proposer un début de solution.
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

La structure est exactement celle de l'exemple de la table
le resultat attendu
c'est quand j'interroge "Req_test",
je restitue les references affectées.
Effectivement ce n'est pas simple.
si je repars de l'exemple des 2 tables voici le resultat attendu :
Req_test
Ref coef affectation
Y 2 A1(B2)*
Z 5 A1<B1/C1*
commentaires:
Y parce que test contient A1 et ne contient pas B2 mais B1)
Z parce que test contient A1 et B1
je ne vois quoi dire de plus.
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
ok c'est clair maintenant...
et c'est clair aussi que tu va galerer...

en fait il faut que tu parse la colonne affectation, afin de la traduire en clause WHERE de ta requete SQL

effectivement je pense qu'il vaut mieux que tu partes sur une solution externe a la base pour realiser ca, car le parsing de chaines de caracteres n'est pas le fort de SQL.
Cela dit, je ne connais que très peu access, quant a Windev, ce n'est a ma connaissance pas un SGBDR mais un IDE.

j'espere que tu as du temps devant toi, car ca risque de ne pas etre simple mais voici une piste vers laquelle je m'orienterai pour parser en VB une Affectation :

je commencerai par une première passe pour développer les affectations, par exemple transformer :
A1 EXISTS(SELECT * FROM test WHERE valeur = 'A1')
B1 -> EXISTS(SELECT * FROM test WHERE valeur = 'B1')
etc

puis les . par des AND
et les / par des OR

sans toucher aux parenthèses...

rajouter cela a la fin d'un "SELECT * FROM Table1 WHERE " et ca devrait commencer a donner quelque chose...

Il n'y aura plus qu'a executer

Par contre c'est loin d'être optimisé mais je ne sais pas quelle quantité de données tu t'attends a traiter au final et avec les index bien placés, ca doit pouvoir être assez rapide quand même. la tout dépend de tes besoins. Après bien sur, pour ce type de problème, le nombre de façons de faire est sans limite, si ce n'est celles de ton imagination...

combien de lignes penses-tu avoir en prod dans chacune de tes tables ?

ATTENTION aussi :
avec cette méthode, vu que tu exécute une requête générée avec du code, tu t'expose aux fameuses attaques de type SQL Injection. il faut donc que tu t'assure de la fiabilité des données à partir de laquelle tu construis ta requête, en l'occurrence de celles contenues dans la colonne "Affectation"

Bon courage, et tiens nous au courant de l'évolution
(et n'hésite pas si tu as d'autres questions)
Messages postés
6
Date d'inscription
samedi 13 novembre 2010
Statut
Membre
Dernière intervention
2 décembre 2010

Effectivement il me faudra bcp de courage
pour info l'extraction possède 14000 enregistrements
et la table "test" 256 lignes
pour en extraire entre 1500 et 3000 lignes.
quand la requete sera au point je la diffuserai.