Suppression de doublons - SQL/NoSQL - Programmation
Marsh Posté le 01-02-2008 à 11:59:17
Merci, effectivement sa ne m'affiche qu'une seul fois tous les sites visités mais sa ne les supprime pas....
Marsh Posté le 01-02-2008 à 12:03:45
essaye un truc dans le genre
Code :
|
note: pas testé, de tête donc gaffe la 1ere fois que tu le lances
Marsh Posté le 01-02-2008 à 12:07:05
vinsang95 a écrit : Merci, effectivement sa ne m'affiche qu'une seul fois tous les sites visités mais sa ne les supprime pas.... |
J'avais pas vu que tu voulais supprimer.
Marsh Posté le 01-02-2008 à 12:54:52
une autre solution simple :
Code :
|
Marsh Posté le 01-02-2008 à 13:15:11
MagicBuzz a écrit : une autre solution simple :
|
Merci c'est une solution que j'avais deja essayée est j'ai une erreur quand je fait sa.
Citation : ERROR 1093 (HY000) : You can't specify target table 'proxy' for update in FROM clause |
j'ai pas encore testé l'autre solution je vais essayé ça dans l'aprés midi.
Je garde bon espoir .....
Marsh Posté le 01-02-2008 à 14:12:48
vu l'erreur, je crois que tu peux dès maintenant commencer à perdre tout espoir...
mysql ne semble pas capable de supprimer des lignes dans une table qu'il est en train de lire à l'aide d'une sous-requête.
c'est mysql quoi... ça me surprend pas.
Marsh Posté le 01-02-2008 à 14:33:12
tu fais un select des min groupé par ip, proxy que tu insert dans un table (eventuellement temporaire)
tu vide la table proxy et tu le re-remplis avec le contenu de ta table temp
Marsh Posté le 01-02-2008 à 15:02:46
MagicBuzz a écrit : vu l'erreur, je crois que tu peux dès maintenant commencer à perdre tout espoir... |
Non faut pas dire des choses comme sa c'est mon projet de stage pour mon bts......
Marsh Posté le 01-02-2008 à 11:46:44
Bonjour,
Apres deux jours de recherches je ne trouve pas de solutions à mon probleme.
Systeme debian SGBD Mysql server 5.0.
J'ai donc une table (proxy) avec 3 champs une reférences(auto incrémenté),une adresse url et une adresse ip.
J'ai un script qui va récuperer les adresses url et ip dans le log de squid (/var/log/squid/access.log) et qui les inscrit ensuite dans la tables grace à un load data infile.
Tous sa marche trés bien le probleme est que pour une adresse ip je peut avoir plusieurs fois le meme site visité.
exemple l'adresse 192.168.1.25 peut avoir visité le site http://forum.hardware.fr/ 15 fois or je ne souhaite n'avoir qu'une seul occurence il faut donc en supprimer 14.
J'ai trouvé la requete select *,count (*) from proxy group by ref,site,ip having count (*) >1 qui me permet de trouver toutes les occurences en trop.
J'ai egallement crée une procedure stocké avec un curseur.
create procedure supdoublon()
begin
declare ipa char (20);
declare ipb char (20);
declare refa int (5);
declare refb int (5);
declare sitea char (100);
declare siteb char (100);
declare cursa cursor for select ref,site,ip from proxy;
declare cursb cursor for select ref,site,ip from proxy;
open cursa;
open cursb;
fetch cursa into refa,sitea,ipa;
while refa <>" " do
while refb<>" " do
fetch cursb into refb,siteb,ipb;
if refa <> refb then
if ipa=ipa then
if sitea=siteb then
delete from proxy where ref=refb;
end if;
end if;
end if;
end while
fetch cursa into refa,ipa,sitea;
end while;
close cursa;
close cursb;
end //
La procédure marche mais elle ne supprimme pas tous les enregistrements seulement une partie je ne sait pas pourquoi.
Si quelqu'un voit l'erreur ou à une solution alternative pour la suppression des doublons sa serait sympas.
Merci.