Avatar billede tk Nybegynder
17. maj 1999 - 09:29 Der er 2 kommentarer og
1 løsning

Fjerne dubletter fra database?

Jeg har en acces database der indeholder en masse email-adresser, som der er blevet tilføjet via en form, som tjekker for at der nu står noget i. Men problemet er at den virker ikke altid, så der er mange entrys bare med "din email her" eller flere entrys med samme email-adresse, da der er nogle folk der er utålmodige.
Er der en der gider at hjælpe mig med at lave et ASP script der fjerner alle entrys der er mere end een af, og så beholder de unikke?

Tk
Avatar billede rdj Nybegynder
17. maj 1999 - 10:55 #1
Jeg har lavet dette SQL script som laver en ny database og kopier de enkle email-adresser til den ny.

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_Email
    (
    Email char(255) NULL,
    )
GO
IF EXISTS(SELECT * FROM dbo.Email)
    EXEC('INSERT INTO dbo.Tmp_Email(Email)
SELECT DISTINCT Email FROM dbo.fotos TABLOCKX')
GO
DROP TABLE dbo.fotos
GO
EXECUTE sp_rename 'dbo.Tmp_fotos', 'fotos'
GO
COMMIT


Ps. Hvis du har spørgsmål : rdj@plass.dk
Avatar billede jgc Nybegynder
17. maj 1999 - 12:58 #2
Hvorfor laver du ikke et indeks på email-feltet for at undgå dubletter. Der skal så selvfølgelig også laves lidt fejlhåndtering (for ikke at smide rå databasefejl i hovedet på webbrugere).
Med hensyn til at fjerne de dubletter du allerede har i databasen, kan du gøre det på 2 måder.
Hvis der ikke er for mange poster kan du blot sortere efter email, og derefter manuelt rydde ud i tabellen. På denne måde kan du holde styr på hvad der står i resten af felterne i tabellen, og beholde den bedste. Hvis der er for mange poster til denne metode, skal du vælge et kriterium for sletningen af dubletterne. Det nemmeste (men ikke nødvendigvis det bedste) er at (ACCESS 97) lave en ny tabel med samme struktur som tabellen med dubletter, sætte et indeks ("ingen dubletter") i emailfeltet, og så køre en tilføjelsesforespørgsel (se evt. Access-hjælpeemnet: "Automatisk slette dublerede poster fra en tabel"). Det vil bruge den første værdi (efter primærnøglen i dublettabellen) og slette alle dubletter herefter. Hvis du har et andet kriterium (f.eks. at beholde den sidst oprettede post) kan dette flettes ind i tilføjelsesforespørgslen.

Nok for denne gang - /Jens
Avatar billede junior Nybegynder
18. maj 1999 - 01:31 #3
Det jeg ville gøre i dit tilfælde, er at starte på helt bar bund og så slette alle de poster der er i databasen, hvís det ikke er noget der er MEGET vigtigt for dig at gemme.

Det jeg så ville gøre er enten 1. at lave et javascript der checker om alt det er udfyldt, og hvis det er så smide det videre fra din form.

2. Så ville jeg checke om den email der er skrevet allerede er i databasen, og så sammenligne de andre felter i formen med alle de former der hører til den email. Hvis vi tænker os det er en gæstebog, ville jeg sammenligne det som personen har skrevet, med andre ting som er skrevet at samme person for at undgå dupletter.

Hvis det er det som du søger er du velkommen til at svare, og skulle det være et direkte script til bare at rydde op til dig - tja... så er det også til at lave, det er ikke det, men det vil være noget der tager lang tid for dig at køre, og for mig at se er det meget uhensigtsmæssigt.

Venligst Ernst / A.ka. Junior
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