Avatar billede minielsen Nybegynder
22. april 2002 - 14:45 Der er 8 kommentarer og
1 løsning

Frasortere dubletter

Jeg har en db, hvori der optræder nogle dubletter.
Hvordan kan jeg før visning af et søge resultat frasortere disse ?

Eller hvordan fjerner jeg dem fra databasen?
Avatar billede kimiwan Nybegynder
22. april 2002 - 14:48 #1
du kan bruge DISTINCT til at undgå HELT IDENTISKE rækker

SELECT DISCTINCT felt1, felt2 FROM tabel1
Avatar billede kimiwan Nybegynder
22. april 2002 - 14:50 #2
..hvis du vil rydde op i din tabel, kan du bruge det samme - DISTINCT - til at kopiere alle rækker valgt med DISTINCT keywordet over i en temp tabel, derefter slette alt fra den gamle, og kopiere fra temp tabellen tilbage i den nu tomme tabel.
Avatar billede minielsen Nybegynder
22. april 2002 - 14:50 #3
Hvor placerer jeg dette?
Her er lidt af koden:

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("partsearch.html")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, Felt1 FROM Comgros WHERE"
strSQL = strSQL & " (Felt1 LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/parts.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p><strong>Resultat af søgning.</p></strong>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>Varenavn</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td><a href='bestil.asp?Vare=" & UCase(rs("felt1")) & "'><font color=blue><strong>" & UCase(rs("Felt1")) & "<th>Er fundet på vores lager.</th></td></tr>"
                rs.MoveNext
    Loop
    Response.Write "</table>"
Avatar billede kimiwan Nybegynder
22. april 2002 - 14:52 #4
SELECT DISTINCT ID, Felt1 FROM Comgros WHERE
Avatar billede rou Nybegynder
22. april 2002 - 14:52 #5
Du kan sikkert frasortere dem med DISTINCT.

Eks.:

SELECT DISTINCT ditfelt1, ditfelt2 FROM dintabel

Det vil give dig et resultat hvor alle felterne tilsammen, er unikke. Det er selfølgeligt et problem hvis det ikke er dem alle som er dupletter.

For at fjerne dem, kan jeg forestille mig noget ala følgende, men det skal du nok lege lidt med.

DELETE FROM
dintabel dt
WHERE
(SELECT COUNT(dupletfelt) FROM dintabel WHERE dupletfelt = dt.dupletfelt) => 2
AND (SELECT MAX(id) FROM dintabel WHERE  dupletfelt = dt.dupletfelt) > dt.id
Avatar billede minielsen Nybegynder
22. april 2002 - 14:55 #6
nahh det er den sgu ligeglad med.
Avatar billede kimiwan Nybegynder
22. april 2002 - 14:56 #7
minielsen: så er det fordi rækkerne i tabellen ikke i ordets betydning er identiske ;o)
Avatar billede minielsen Nybegynder
22. april 2002 - 14:57 #8
jeg kikker lidt på det, men her er points til dig :)
Avatar billede kimiwan Nybegynder
22. april 2002 - 15:00 #9
takker, selvom det måske var på en lidt billig baggrund.. du fik jo ikke umiddelbart det, du skulle bruge :-/
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