29. juni 2002 - 18:11Der er
4 kommentarer og 3 løsninger
Vis kun poster en gang
Jeg har en db (Access 97) med en forespørgsel der henter fra to tabeller. Derved får jeg en lang liste hvor samme ID kan forekomme flere gange. Det er normalt helt i orden, men nu har jeg brug for kun at få vist records med f.eks ID = 1 en gang, nemlig første gang den forekommer.
itbjarne har ret. Du skal bare være opmærksom på at jo flere felter, du vælger at vise, jo større er sansynligheden for at ID optræder flere gange i udtrækket.
Når du bruger Distinct, så sørger den blot for at hver POST er unik. Dvs hvis du har det samme ID 10 gange men med forskellige vædier i de andre kolonner, så vil du stadig få 10 poster selvom du bruger Distinct.
I stedet kan du vælge at gruppere din forespørgsel og så vælge "Grupper efter" under ID og "First" eller "Min" under de andre kolonner.
Og hvis du har flere POSTER (dvs. poster hvor der er flere felter) og du kun vil have de poster hvor ALLE felterne er kun skal vises een gang, så kan du anvende DISTINCTROW.
Når du henter informationer fra flere tabeller af samme omgang, vil du som regel få vist samme id i tabel1 flere gange. Det skyldes at samme id i tabel-1 har mange relationer i tabel-2, og derfor vil tabel-1 id naturligvis vises flere gange. Sådan skal det jo være. Hvis du kun vil se id i tabel-1 en gang, skal du nøjes med at trække oplysninger ud fra tabel-1. Id i tabel-1 er formentlig unik, og derfor vil du kun få listet samme id en gang.
Desværre virker DISTINCT ikke når der er et memo/notat felt med i forespørgslen. DISTINCTROW viser enten alt eller også kun de rækker der har noget i begge tabeller.
Her kommer lidt kode: SELECT DISTINCTROW Fejlmelding.ID, Fejlmelding.Lokale, Fejlmelding.Maskine, Debat.Anmelder, Debat.Kommentar FROM Fejlmelding INNER JOIN Debat ON Fejlmelding.ID = Debat.Sag ;
Denne kode viser kun de rækker hvor begge tabeller har data. Hvis jeg ændrer INNER til LEFT vises alle rækker. RIGHT giver samme resultat som INNER.
Mystikken breder sig og problemet er løst med denne sætning som jeg er sikker på jeg har prøvet før. Eneste forskel er at der ikke vises nogen felter fra tabellen Debat. Der var tilsyneladende heller ikke problemer med at have Notat/memo felt (uddybning) sammen med distinctrow.
SELECT DISTINCTROW Fejlmelding.ID, Fejlmelding.Lokale, Fejlmelding.Maskine, Fejlmelding.Dato, Fejlmelding.Fejl, Fejlmelding.Uddybning FROM Fejlmelding LEFT JOIN Debat ON Fejlmelding.ID = Debat.Sag;
Tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.