Avatar billede oskar Nybegynder
29. juni 2002 - 18:11 Der 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.

Hvor gør jeg det?
Avatar billede itbjarne Nybegynder
29. juni 2002 - 18:40 #1
Du anvender DISTINCT:
SELECT DISTINCT feltnavn FROM tabel WHERE....
29. juni 2002 - 19:55 #2
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.
Avatar billede itbjarne Nybegynder
29. juni 2002 - 20:30 #3
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.
Avatar billede hansk Nybegynder
29. juni 2002 - 20:50 #4
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.
Avatar billede oskar Nybegynder
29. juni 2002 - 23:45 #5
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.
Avatar billede terry Ekspert
30. juni 2002 - 10:18 #6
oskar>What are you saying in your comment 29/06-2002 23:45:30, Is it working as you want or not?

If you want your memo in the result or at least some of it then you could try SELECT.... Left(Memofield, 255) as PartOfMemo .....
Avatar billede oskar Nybegynder
30. juni 2002 - 15:05 #7
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
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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