oracle9i : données hétérogènes dans une whereclause - SQL/NoSQL - Programmation
Marsh Posté le 24-11-2005 à 17:48:13
tu remplaces le '=' par un 'like', et un tu ajoutes un 'or like' par mot?
Marsh Posté le 24-11-2005 à 17:54:21
mouiiii, mais bon.
J'ai potentiellement plusieurs centaines de valeurs en entrée, et plusieurs where clause différent (NOM like 'pouet' and PRENOM like 'prout'). L'itération en dynamique dans PHP serait à mon avis super difficile à gérer
Marsh Posté le 24-11-2005 à 17:58:01
Bah explique mieux le contexte du problème, et l'origine des valeurs saisie, alors...
Tous les noms et tous les prénoms (et ainsi de suite) entrés peuvent être combinés?
Si non, comment tu les associes?
Si oui, quel est le problème?
Marsh Posté le 24-11-2005 à 18:13:35
Il y a au max 2 clauses renseignés par l'utilisateur + pas mal de fixes. Si il y a 2 clauses à renseigner, il n'y a que la première qui a un %, l'autre valeur peut se traduire en in(...)
Exemple :
"select NOM,PRENOM from USERS where NOM=... and PRENOM=... and date>sysdate and machine=truc and service=bidule;"
Donc, je pourrais écrire ma requête en :
"select NOM,PRENOM from USERS where (NOM like ... or NOM like .... or NOM like ...) and (PRENOM in ('Roberto')) and date>sysdate and machine=truc and service=bidule;"
Potentiellement, il peut y avoir une liste de qq centaines (>500) de NOM ...
Marsh Posté le 24-11-2005 à 18:21:17
Si tu peux avoir plusieurs centaines de noms, ils serait effectivement intéressant d'un point de vue performance de détecter les nom comportant des caractères jocker pour les traiter séparément des autres (que tu traiterait dans un IN). Mais Si ta base est d'un taille raisonnable et/ou que les perfs coté BD ne sont pas un problème, opte pour la solution du 'or NOM like' tu te feras moins chier à le coder et le pré traitement avant de lancer la requête sera plus rapide
Marsh Posté le 28-11-2005 à 13:23:40
En pratique, personne ne va entrer à la main 500 noms à rechercher ... ou alors il y a des fous du clavier
Marsh Posté le 28-11-2005 à 20:15:56
Beegee a écrit : En pratique, personne ne va entrer à la main 500 noms à rechercher ... ou alors il y a des fous du clavier |
Qui te dis que les noms sont saisis au clavier ? si ça se trouve l'utilisateur les sélectionne dans une liste de 2000 salarié avec des critères qui lui sont propres et qu'on ne peut pas traduire sous forme de requête
Marsh Posté le 24-11-2005 à 17:42:04
Hello,
je me retrouve en face d'un pb technique, simple à comprendre.
En gros, je voudrais faire un :
"select NOM,PRENOM from USERS where NOM=..."
Cette requête sera lancé à une page Web en PHP, et les valeurs saisies peuvent être de plusieurs type :
- un nom simple : exemple : 'DUPONT'
- une liste de nom : exemple : 'DUPONT','DURAND'
- une liste non précise : exemple 'DU%'
Sachant que tout peut être mélangé, l'utilisateur devra pouvoir mettre en entrée : 'MAURICE','DU%','ROBERT'
J'ai beau réfléchir, je trouve pas de solution simple, à moins de détecter le %, et je génére une sous-requête en dynamique ...
Help !