28. juni 2004 - 17:00Der er
13 kommentarer og 1 løsning
Query - list af records med ens felt
Jeg har en database med 11000 records. Der skal jeg lave en query på alle records hvor et felt (Key) også findes i en anden record. Mit output skulle gerne være en liste med de records der er dobbelt. Jeg ønsker ikke den 1. record i listen
Resultatet skal checkes for at et andet felt(creationdate) er ens i de "ens" records. Hvis creation date ikke er ens så skal jeg have den liste med records hvor creationdate ikke er ens
Der er kun en tabel.
I bund og grund vil jeg gerne have 2 lister. 1. Liste med records hvor key er dobbelt, og hvor creationdate er ens. 2. Liste med records hvor key er dobbelt, og hvor creationdate ikke er ens.
Min SQL ser således ud indtil nu: SELECT items.KeyType, items.Key, items.Folder, items.File, items.CreationDate FROM items WHERE (((items.KeyType)="EDR")) ORDER BY items.KeyType;
Hejsa, En forespørgsel der checker for dubletter i Items fundet på feltet key med kriteriet "EDR". Dernæst en dublet søgning hvor du sætter Items tabellen op imod den forespørgsel du lige har lavet. Så burde du have det første du ønsker. Den anden liste kommer ved at du i SQL'en for den sidste forespørgsel sætter "<>" i stedet for "=".
Terry: Nej vi kan ikke være sikker på at der kun er max two records. Men på den anden side så har jeg ikke set mere end to "ens" records. Men jeg kan jo checke ved at køre query igen efter dubletter er fundet og fjernet. Bjørn: Hvordan ser SQL'en ud for søgning efter dubletter.
Terry: Ja det var ligetil. Jeg har ca 7400 duplicates. Herud af er der 39 med 3 records og ingen med 4 records. Men listen er med både den 1. og 2. records. Jeg ønsker en liste kun med records udover den 1.
SELECT [Key], [KeyType], [File], [Folder], [CreationDate] FROM items WHERE [Key] In (SELECT [Key] FROM [items] As Tmp GROUP BY [Key] HAVING Count(*)>1 ) ORDER BY [Key];
Dette virker, og finder hvis både key og creationdate er dupletter. Men det er statigvæk med begge records.
SELECT [Key], [CreationDate], [KeyType], [File], [Folder] FROM items WHERE [Key] In (SELECT [Key] FROM [items] As Tmp GROUP BY [Key],[CreationDate] HAVING Count(*)>1 And [CreationDate] = [items].[CreationDate]) ORDER BY [Key], [CreationDate];
what do you mean with "Men det er statigvæk med begge records."? Dont you want to see BOTH? The problem is, is that your table doesnt have a unique index, so which one is the first record?
Nej jeg vil ikke se begge records. Men jeg har fundet en løsning, der kan bruges. Det er kun en gang jeg skal lave dette for at rydde op. Jeg har kopieret resultatet fra query til excel. Der har jeg fjernet de ekstra records, og så fået den løsning jeg ønskede. Giv et svar så får du point, for din store indsats og hjælp
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.