oskarsMedlem sedan nov. 20051 317 inlägg 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
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 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!
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 Okej! Inte jag heller! :birp
@ndersMedlem sedan juni 200032 969 inlägg
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 @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 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 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?
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
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
oskarsMedlem sedan nov. 20051 317 inlägg *dansar* Ni är så snälla!