webForumDet fria alternativet

Ta bort dubletter

12 svar · 636 visningar · startad av oskars

oskarsMedlem sedan nov. 20051 317 inlägg
#1

Hej på er!

Ja, jag har sökt på forumet... och har hittat flertalet trådar om hur man tar bort dubletter... Men behöver ett eget exempel för att förstår :/

Jag har en tabell (minTabell) som innehåller tusentals poster.

Jag vill:

  • Ta bort alla dubletter: Där fälten strNamn och strEfternamn är likadana i dom båda posterna (ska kunna gå att ändra om jag behöver dock).
  • Och detta vill jag enbart göra t.ex på dom där ID > 100
  • Det vore även bra om man först kunde få en lista över dom som är dubletter innan man tar bort dom... så man får lite koll....

Vore så tacksam för hjälp för jag har lite panik här :(

Jag kör MySQL!

:stud

Oskar

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Finns särket ett bättre sätt i SQL direkt men jag hade kunnat tänka mig:
Gör en SELECT sats där du sortera efter strNamn och StrEfternamn där id > 100
och sedan använder ASP/PHP/whatever att göra en deletesats OM förra StrNamn och StrEfternamn stämmer överens med nuvarande för- och efternamn.

oskarsMedlem sedan nov. 20051 317 inlägg
#3

Hm, jo så kan man ju göra! Eller nej det går ju inte.... för dubletterna behöer ju inte ligga precis under varandra!

hur menar du med "i SQL direkt"? Jag kör EMS MySQL Manager!

voigtann1Medlem sedan juni 20019 519 inlägg
#4

vad jag menar är att man kan särket lösa problemet direkt med hjälp av en SQL sträng / i programvaran. Men detta har jag ingen koll på.

oskarsMedlem sedan nov. 20051 317 inlägg
#5

Okej! Inte jag heller! :birp

@ndersMedlem sedan juni 200032 969 inlägg
#6

Hm, jo så kan man ju göra! Eller nej det går ju inte.... för dubletterna behöer ju inte ligga precis under varandra!

Det kan de väl göra? Det beror ju på hur du sorterar i order by i din sql-fråga...

oskarsMedlem sedan nov. 20051 317 inlägg
#7

@nders... .... ... du har rätt... . .... är det här bästa lösningen tror du?

Men hur kollar jag om "den förra posten" är lika med den nya posten?

Förstår itne hur jag ska spara dom i olika variablar... eller.. kanske är för stressad för att tänk klart

@ndersMedlem sedan juni 200032 969 inlägg
#8

det går absolut att lösa med ren sql, annars kan man ju om man vill lösa det i asp göra det, genom att jämföra lite variabler. typ:

sFirstName = ""
sLastName = ""
while not foo.eof
     if foo("firstname") = sFirstName and foo("lastname") = sLastName then
           ' samma som förra, för böveln, radera denna!
     end if
     sFirstName = foo("firstname")
     sLastName = foo("lastname")
     ...
     foo.movenext
wend

enkelt beskrivet...

oskarsMedlem sedan nov. 20051 317 inlägg
#9

Du @nders! Tack!!!!

jävlar vad bra!

nu har jag gjort så att där du skrivit "för bövelen" så skriver jag istället ut dubletten... då kan man väl säga att scriptet skriver ut dubletten, medan det samtidigt finns ett "orginal" som inte visas i listan?

voigtann1Medlem sedan juni 20019 519 inlägg
#10

precis...

sFirstName = ""
sLastName = ""
while not foo.eof
     if foo("firstname") = sFirstName and foo("lastname") = sLastName then
       response.write foo("firstname") & " " foo("lastname")  & " idnummer <strong>" & foo("id") "</strong> är en dublett"
       'SQL För att radera dubellet(rekomendera ID nummer då om du använder dig av firstname eller lastname så tar du bort alla poster ;)
     end if
     sFirstName = foo("firstname")
     sLastName = foo("lastname")
     ...
     foo.movenext
wend
oskarsMedlem sedan nov. 20051 317 inlägg
#11

voigtann1 skrev:

precis...

sFirstName = ""
sLastName = ""
while not foo.eof
     if foo("firstname") = sFirstName and foo("lastname") = sLastName then
       response.write foo("firstname") & " " foo("lastname")  & " är en dublett"
       'SQL För att radera dubellet(rekomendera ID nummer då om du använder dig av firstname eller lastname så tar du bort alla poster ;)
     end if
     sFirstName = foo("firstname")
     sLastName = foo("lastname")
     ...
     foo.movenext
wend

"rekomendera ID nummer då om du använder dig av firstname eller lastname så tar du bort alla poster ;)"

Menar du att jag ska DELETE FROM minTabell WHERE ID = RecSet("ID") eller något annat? :D

voigtann1Medlem sedan juni 20019 519 inlägg
#12

precis.

oskarsMedlem sedan nov. 20051 317 inlägg
#13

*dansar* Ni är så snälla!

123 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)