Procédure moteur de recherche multi-critères (Sql Server)

Procédure moteur de recherche multi-critères (Sql Server) - SQL/NoSQL - Programmation

Marsh Posté le 25-06-2004 à 11:50:09    

Hello,
 
Je dois réaliser un moteur de recherhe multi-critère sur une table
 
par
- Nom
- Nom et prénom
- Prénom
- Nom et date de naissance
- Date de naissance
- Rue
- Localite
- Rue et Localite
- Nom et Localite
- Nom, Rue et Localité
 
et seulement ces variantes !
on ne pourra pas recherche par Prénom et date de naissance p.ex.
 
ces données sont "sensibles"
 
j'avais pensé à un truc du style, avec des UNION, mais ça ne fonctionne pas. une idée ?
 
 

Code :
  1. CREATE PROCEDURE SEARCH_ATB_MEMBRE
  2. @NOM VARCHAR,
  3. @PRENOM VARCHAR
  4. AS
  5. DECLARE @FIRST int
  6. SET @FIRST = 1
  7. BEGIN
  8. BEGIN TRAN
  9. IF LEN(@NOM) > 0
  10.     BEGIN
  11. SELECT * FROM ATB_MEMBRES WHERE NOM_MEMBRE LIKE '%'+@NOM+'%'
  12. SET @FIRST = 0
  13.     END
  14. IF LEN(@PRENOM) > 0
  15.     BEGIN
  16. IF @FIRST = 0
  17.     BEGIN
  18.  UNION
  19.  SELECT * FROM ATB_MEMBRES WHERE PRENOM_MEMBRE LIKE '%'+@PRENOM+'%'
  20.     END
  21. ELSE
  22.     BEGIN
  23.  SELECT * FROM ATB_MEMBRES WHERE PRENOM_MEMBRE LIKE '%'+@PRENOM+'%'
  24.     END
  25.     END
  26.   IF @@error <> 0
  27.     BEGIN
  28.       ROLLBACK TRAN
  29.     END
  30.   ELSE
  31.     BEGIN 
  32.       COMMIT TRAN
  33.   END
  34. END


Message édité par jagstang le 25-06-2004 à 11:50:50

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-06-2004 à 11:50:09   

Reply

Marsh Posté le 25-06-2004 à 11:52:07    

ma version est très, très laide. autant géré dans l'application et faire 10 procédure (ce que j'aimerais éviter)
 
J'aimerais un truc propre


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-06-2004 à 11:56:12    

Une première question est de savoir de quelle facon est fait le choix des conditions


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 25-06-2004 à 11:57:55    

Lord ii a écrit :

Une première question est de savoir de quelle facon est fait le choix des conditions


c'est à dire


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-06-2004 à 12:11:52    

Imaginons que l'utilisateur est saisi un prénom et une date de naissance, sur quoi va tu faire la recherche ??
 
La finalité est de créer une seule procédure recevant en paramètres tous les champs pouvant etre renseignés.
Ensuite au sein de la procédure on fabrique la clause where en fonction des paramètres de celle-ci.
Si on a, en plus, un élément nous permettant de savoir quels critères prédominent, la construction se résume à un bref if...else


Message édité par Lord II le 25-06-2004 à 12:13:13

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 25-06-2004 à 13:17:16    

si seulement c'était si simple... seulement certaines recherche ne sont pas permises (prénom et date de naissace par exemple)
 
par contre, prénom ou date c'est possible
 
je suis en train de faire un truc bourrin que je posterais plus tard ici sans un seul IF


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed