Beitrag von trixi (17 Beiträge) am Montag, 6.Oktober.2003, 23:38.
doppelte einträge
guten abend,
ich habe eine db mit mailadressen.
wie kann ich es einfach anstellen, daß doppelte adressen rausfallen?
z.zt. exportiere ich alles als csv-datei in excel und sortiere dort händisch aus - echt übel.
trixi
Antworten
Beitrag von olaf (59 Beiträge) am Dienstag, 7.Oktober.2003, 15:35. WWW: kleclan.de
Re: doppelte einträge
hallo trixi,
möchtest du alle doppelten oder x-fachen mailadr. löschen? könnte man z.b. so machen:
get "mail==$mailadr","maildb","del";
get_next("del"); #ersten gefunden eintrag übergehen, sprich behalten
while(get_next("del") ){
del "Id==$Id","maildb";
}
vielleicht könntest du aber auch vor dem hinzufühgen einer neuen mailadr. abfragen, ob es die schon gibt, evtl. so:
$mail="";
get "mail==$mailadr","maildb";
unless ( $mail ) {
put ["mail",$mailadr],"maildb";
}else{
out "$mailadr gibt's schon, sorry";
}
ich hoffe ich konnte dir weiterhelfen oder wenigstens einen kleinen tipp geben.
gruss
olaf
Antworten
Beitrag von trixi (17 Beiträge) am Mittwoch, 8.Oktober.2003, 10:09.
Re: doppelte einträge
hallo olaf,
hab` versucht, deinen tipp umzusetzen.
hat irgendwie noch einen kleinen fehler.
beim versuch hat er zwar die erste mail übergangen,
doch die anderen 900 adressen hat er mir dann gelöscht :-)
trixi
--------------------------------
<perl>
get "mail==$email","email","del";
get_next("del"); #ersten gefunden eintrag übergehen, sprich behalten
while(get_next("del") ){
del "Id==$Id","email";
}
</perl>
--------------------------------
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 16:20. WWW: kleclan.de
Re: doppelte einträge
hallo trixi,
hoffentlich ist das nur bei einer kopie deiner db passiert *hoff*. aber ich habe das so mit einer (test)db bei mir getestet und da hat es gefunzt.
es hängt davon ab was du in $email stehen hattest. das ist nur eine variable die ich als beispiel gewählt habe. die musst du natürlich deiner "umgebung" anpassen. dort muss die variable stehen, in der du die emailadr hast deren doppelt einträge du löschen möchtest.
aber ich glaube ich weiss jetzt was du wolltest. du wolltest nicht die doppelten einträge EINER bestimmten mailadr. (in meinem falle die in $mail) sondern ALLE doppelteinträge aus der db löschen.
eine möglichkeit wäre da:
<perl>
get "","maildb","mails"; # alle einträge aus der maildb holen
while(get_next("mails") ){
out "$mail gefunden<br>";
get "mail==!$mail","maildb","del"; # hole alle einträge mit ein und der gleichen mailadr
get_next("del"); # übergehen bzw übersehe des ersten eintrags dieser mail
while(get_next("del") ){ #alle anderen einträge mit der mailadr löschen
out " lösche $mail ( Id = $Id)<br>";
del "Id==!$Id","maildb";
das ist sicherlich nicht die effizienteste routine aber ich hab sie getestet und sie löscht alle doppelt einträge in dem feld "mail".
ich hoffe, das durch mein missverständniss nicht alle deine mailadr. weg sind.
gruss
olaf
Antworten
Beitrag von trixi (17 Beiträge) am Mittwoch, 8.Oktober.2003, 17:15.
Re: doppelte einträge
hi olaf,
war nur ne kopie_db - zum glück ;-)
dein perl funktioniert so weit.
es sucht nur nach der nächsten doppelten adresse und löscht alle doppelten "dieser adresse" raus.
sind jetzt z.b. von 5 mailadressen 2 oder mehrere einträge drin, dann muß ich beim template 5x aktualisieren klicken, daß alle doppleten gelöscht sind.
meintest du das mit "nicht die effizienteste routine" oder mache ich vielleicht nochwas falsch.
die db, wie auch die feldbezeichnung ist "email".
danke
trixi
<perl>
get "","email","email"; # alle einträge aus der maildb holen
while(get_next("email") ){
out "$email gefunden<br>";
get "email==!$email","email","del"; # hole alle einträge mit ein und der gleichen mailadr
get_next("del"); # übergehen bzw übersehe des ersten eintrags dieser mail
while(get_next("del") ){ #alle anderen einträge mit der mailadr löschen
out " lösche $email ( Id = $Id)<br>";
del "Id==!$Id","email";
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 17:41. WWW: kleclan.de
Re: doppelte einträge
hi trixi,
mit ineffizient meine ich das zweite get und while.
das es bei dir nicht klappt, liegt daran, das du beim ersten get und get_next aus dem "mails" ein "email" gemacht hast. bp kommt da leicht durcheinander.
wenn man mit mehreren verschachtelten get's arbeitet wie hier, macht es sinn, wenn die suchergebnisse unter einem anderen namen abgespeichert werden als wie die db heisst.
gruss
olaf
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 17:20. WWW: kleclan.de
Re: doppelte einträge
hi trixi, ich bins nochmal.
es geht auch weniger kompliziert und ist sicher schneller.
<perl>
get "","maildb","mails"; # alle einträge aus der maildb holen
while(get_next("mails") ){
del "Id>$Id&mail==!$mail","maildb"; #alle nachfolgen eintrage mit der gleichen mail löschen.
}
</perl>
gruss olaf
Antworten
Beitrag von :-(trixi (1 Beitrag) am Mittwoch, 8.Oktober.2003, 17:26.
Re: doppelte einträge
... jetzt wird garnichts mehr gelöscht?!
<perl>
get "","email","email"; # alle einträge aus der maildb holen
while(get_next("email") ){
del "Id>$Id&email==!$email","email"; #alle nachfolgen eintrage mit der gleichen mail löschen.
}
</perl>
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 17:44.
Re: doppelte einträge
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 17:51.
T R I X I - B I T T E
Antworten
Beitrag von trixi (17 Beiträge) am Mittwoch, 8.Oktober.2003, 20:28.
Re: T R I X I - B I T T E
hi olaf,
christoph hat ja geschrieben:
"Es gibt keine dummen Fragen - jeder hat mal angefangen!"
es muß ja ganz schön gestresst haben :-)
fett und grossbuchstaben !!
aber es hat seinen zweck erfüllt.
es funktioniert - danke
trixi
Antworten
Beitrag von olaf (59 Beiträge) am Mittwoch, 8.Oktober.2003, 21:34. WWW: kleclan.de
Re: T R I X I - B I T T E
hi trixi,
sorry, wenn das gestresst klang. ich war nur verzweifelt, weil du immer geschrieben hast das es nicht klappt obwohl es bei mir gefunzt hat. und mir ist das problem nicht so schnell aufgefallen, weil so gross ist der unterschied ja nicht zwischen mails und email ;-))
sollte nicht irgendwie bös' oder so klingen. wenn das so rüber kam entschuldige ich mich hiermit.
gruss
olaf
Antworten
Beitrag von trixi (17 Beiträge) am Mittwoch, 8.Oktober.2003, 22:09.
@olaf
hi olaf,
daß war nicht böse aufgenommen.
ich wäre wahrscheinlich innerlich explodiert.
schön, daß es geklappt hat.
danke
trixi
Antworten