Requete !! Pour trouver un mot

Requete !! Pour trouver un mot - SQL/NoSQL - Programmation

Marsh Posté le 14-04-2005 à 15:57:40    

Bonsoir,
 
   Voila mon pb :
              J'ai un mot H1524D ( par exemple )
              Et je cherche si il se trouve dans ma table Pwet colonne Nom,
 
    Et si il n'y est pas cherché le H1524 ...
    Et si il n'y est pas cherché le H152 ...
    Et si il n'y est pas cherché le H15 ...
    Et si il n'y est pas cherché le H1 ...
    Et si il n'y est pas cherché le H ...
 
Sachant que Nom n'est pas la clé primaire de Pwet ( donc plusieur solution possible.
Et je doit faire cet manip pour une 100ene de mot se trouvant dans une autre table (Prout.nom).
 
Donc j'avais une idée sur :
 select *  
 from Pwet  
 where Nom in ( select nom  
                from Prout
                where idprout = xXx );
Mais sa marche pas :/ et pi sa cherche pas pour tous les "mots".
Sachant que j'utilise mysql 4.0.15-max


Message édité par Krollo le 14-04-2005 à 16:08:58
Reply

Marsh Posté le 14-04-2005 à 15:57:40   

Reply

Marsh Posté le 14-04-2005 à 17:29:03    

- soit "tu attaques de front" avec LIKE, LEFT et % ,  mais bon là tu risques de paumer l'optimiseur en route et ça risque d'être "cracra" niveau perfs  :/
 
- soit tu la joues plus finement, et tu décomposes le boulot avec des tables temporaires (1-2 à vue de nez, ça devrait être suffisant) et qq DELETE bien placés ...


Message édité par Zzozo le 14-04-2005 à 17:33:13
Reply

Marsh Posté le 14-04-2005 à 21:06:08    

J'ai un peu de mal a saisir se que tu veux dire, je voi un peu le principe du LIKE j'ai regardé un peu a quoi sa consisté mais je saisi pas trop en quoi tes tables temporaire pourrai maidé :/. Si tu pouvai develloper un peu ton idé , stp

Reply

Marsh Posté le 15-04-2005 à 09:39:46    

"De front" :
Tu balances des requêtes du style  

SELECT <les colonnes que tu veux>
FROM <table à parcourir> t
WHERE t.Nom LIKE $le_pattern


à partir d'un script où tu fais varier la variable le_pattern, de l'ensemble du mot recherché à la première lettre du mot recherché, en t'arrêtant quand ca matche, ou quand tu as balayé tout le mot sans rien trouvé bien sur. Et tu oublies pas d'ajouter, % à lafin de le_pattern avant chaque requête sinon le LIKE t'aidera pas bcp
 
J'ai laissé tombé le LEFT direct en SQL, vu que MySQL ne connait pas encore les proc. stockées ...


Message édité par Zzozo le 15-04-2005 à 09:41:39
Reply

Marsh Posté le 15-04-2005 à 10:00:09    

Bon alors, tu trouves pour les tables temporaires ? :o

Reply

Marsh Posté le 15-04-2005 à 10:15:33    

Je cherche merci pour tes indications

Reply

Marsh Posté le 15-04-2005 à 11:38:45    

Escuse moi encore 2min Zzozo mais peut tu me dire la difference entre un t.Nom LIKE 'pwet'
              et un t.Nom='pwet'

Reply

Marsh Posté le 15-04-2005 à 11:41:28    

Krollo a écrit :

Escuse moi encore 2min Zzozo mais peut tu me dire la difference entre un t.Nom LIKE 'pwet'
              et un t.Nom='pwet'


Aucune dans le résultat que ça va produire (y'aura ptet des différences ailleur, mais c'est pas là le pb :o ) ... [:ddr555]
 
Par contre si tu mets un t.Nom LIKE 'pwet%'  ca va correspondre à tous les Noms commençant par pwet  :o

Reply

Sujets relatifs:

Leave a Replay

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