Envoyé par : Raphael
Date : 01/11/2007 19:45
Bonjour, je travaille avec une base SQLite3 et je suis en train de créer un script qui scannerait une table pour trouver des "doublons" dans mes entrées...
Voici mon algo. grossomodo :
Voilà, le problème semble être que ce script tourne plus vite que les requêtes, effectivement, j'ai une erreur au bout du 100ème passage environ...
Quand je fais un try{}catch(e){alert(e);}, j'ai une erreur SQLite affichée, et quand je continue, je vais environ 100 passage plus loin et même erreur, etc...
A mon sens, on dirait que les SELECT se font rattraper par la nouvelle boucle et que ça finit par bugguer...
Qu'en pensez-vous ? Auriez-vous une autre méthode à me proposer ? Une solution ?
Je ne vois pas comment faire autrement, que boucler sur chaque élement et faire une requête pour chercher des éléments similaires par requête...
Merci d'avance.
Envoyé par : omicron
Date : 03/11/2007 19:03
Si tu compares les résultats d'un "SELECT COUNT(X)" avec ceux d'un "SELECT COUNT(DISTINCT X)", tu sauras immédiatement si tu es en présence de doublons ou non.
Envoyé par : Raphael
Date : 03/11/2007 22:25
Ouais, mais ça c'est pour de "vrais" doublons... alors que moi, je suis obligé de faire une recherche sur plusieurs champs ou sur des champs approximatifs genre WHERE Name like 'Name',...
J'ai une idée que je testerai demain : tout faire manuellement :
Envoyé par : syl
Date : 04/11/2007 17:45
Pourquoi ne pas traiter cela en SQL directement et faire une requete du type :
SELECT t1.id FROM table1 as t1, table1 as t2 WHERE t1.id <> t2.id AND (t1.champs1 = t2.champs1 OR t1.champs2 LIKE t2.champs2)
Syl
Envoyé par : Raphael
Date : 04/11/2007 18:55
Wah, j'avais complètement zappé qu'on pouvait faire ce genre de choses en SQL... utiliser des recherches sur la même table...
Ca devrait pouvoir marcher, faut que j'étudie ça en détail.
Merci pour la piste =)
EDIT : En fait, ce problème est lié à mon autre topic et il est résolu : On ne peut pas faire une requête SQL pendant qu'on est dans une boucle While (executeStep)
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.