Avatar billede kaptajnknas Nybegynder
04. august 2006 - 18:27 Der er 15 kommentarer og
2 løsninger

Find dubletter i MySql

Hvordan finder jeg bubletter i min MySql og hvordan forhindre jeg fremover at det sker?
Avatar billede esbenp Nybegynder
04. august 2006 - 19:23 #1
Hvad med at oprette et unikt index? Så kan de slet ikke fremkomme
Avatar billede kaptajnknas Nybegynder
04. august 2006 - 19:38 #2
Jeg har et unikt ID, men i kolonnen emne kan der godt oprettes to gange det samme
Avatar billede thesurfer Nybegynder
04. august 2006 - 19:51 #3
Lav en forespørgsel. Hvis du får poster tilbage, er det fordi de eksisterer.

Eksempel:

emne = replace(request.form("emne"), "'", "''")
sql = "select * from DinTabel where emne = '" & emne & "'"
if not (rs.bof or rs.eof) then
' emnet eksisterer allerede
else
' alt er ok
end if
Avatar billede esbenp Nybegynder
04. august 2006 - 19:52 #4
så lav et unikt index på emne
Avatar billede thesurfer Nybegynder
04. august 2006 - 19:52 #5
Og du kan sagtens sammenligne flere kriterier:

fornavn = replace(request.form("fornavn"), "'", "''")
emne = replace(request.form("emne"), "'", "''")

sql = "select * from DinTabel where fornavn ='" & fornavn & "' OR emne = '" & emne & "'"
if not (rs.bof or rs.eof) then
' emnet eksisterer allerede
else
' alt er ok
end if

1) ..Jeg valgte bare "fornavn" som et eksempel:
2) Du bruger bare flere "OR" jo flere kriterier der er..
Avatar billede kaptajnknas Nybegynder
04. august 2006 - 20:22 #6
thesurfer >> det er meget fint, nu har jeg lagt en forespørgsel ind på emne med if not rs.eof..., men faktisk vil jeg også gerne lave et unikt id på kolonnen, for at være helt sikker.
Avatar billede kaptajnknas Nybegynder
04. august 2006 - 21:02 #7
Er det funktionen der hedder primary key?
Avatar billede plx Nybegynder
04. august 2006 - 21:10 #8
det er den attribut som hedder UNIQUE

ved indsættelse kan du fange fejlen med error handling:

On Error Resume Next

conn.Execute sql

If Err.Number <> 0 Then
    ' fejl ved insert
End If

On Error Goto 0 ' fortsæt med normal error handling
Avatar billede nielle Nybegynder
04. august 2006 - 22:59 #9
Angående problemet med at finde dubletter i din nuværende tabel:

SELECT ditFelt, count(*) AS antal FROM dinTabel GROUP BY ditFelt

Denne tæller hvor mange poster der er af hver værdi, og det er derfor bare at finde de poster som har antal >= 2, dvs.:

SELECT ditFelt, count(*) AS antal FROM dinTabel GROUP BY ditFelt HAVING antal >= 2
Avatar billede kaptajnknas Nybegynder
05. august 2006 - 15:47 #10
Fint, mange tak :-)
Svar = points
Avatar billede nielle Nybegynder
05. august 2006 - 16:40 #11
Hvem vil du have svar fra?
Avatar billede kaptajnknas Nybegynder
05. august 2006 - 17:09 #12
Nielle og plx
Avatar billede nielle Nybegynder
05. august 2006 - 17:13 #13
Hmm, jeg synes nu at der er flere som har bidraget.

... og et svar :^)
Avatar billede kaptajnknas Nybegynder
05. august 2006 - 17:24 #14
ja klart også thesurfer
Avatar billede thesurfer Nybegynder
06. august 2006 - 11:18 #15
Ok :-)
Avatar billede kaptajnknas Nybegynder
13. august 2006 - 15:43 #16
points
Avatar billede thesurfer Nybegynder
13. august 2006 - 15:50 #17
Hey der.. :-)
Takker for points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester