Avatar billede networst Nybegynder
28. juli 2003 - 11:51 Der er 12 kommentarer og
1 løsning

strukturering af forespørgelsel

ref.: http://www.eksperten.dk/spm/379807

jeg har en tabel med alle perioder fremover. hver periode dækker fra d. 15 i måneden, til d. 14 i næstkommende måned. Dernæst har jeg en tabel som finder et kundenr (i kundetabellen) og tæller op på hvormange aktiviteter den pågældende kunde har. Problemet består i at når jeg viser listen over aktiviteter, vises kun de kunder som har én eller flere aktiviteter. Altså de kunder som endnu ikke har haft en aktivitet bliver altså ikke udskrevet. For at udskrive listen bruger jeg bare en count og tæller alle aktivitetsposterne op. Alle kunder skal udskrives således:

Kundenr;Navn;Periode;AntalAktiviteter

Hvordan kan en såddan forespørgelsel struktureres?
Avatar billede kabbak Professor
28. juli 2003 - 12:08 #1
hvad hedder dine tabeller, og hvordan der de linket ?
Hvad hedder dine felter i tabellerne
Avatar billede networst Nybegynder
28. juli 2003 - 12:14 #2
prøv at se ovenstående link. der er det hele beskrevet...
Avatar billede nih Novice
28. juli 2003 - 12:17 #3
Du skal lave et outer join.

I din foresp kan du højreklikke på relationen mellem dine tabeler vælge egenskaber og afkrydse at forespørgslen skal returnere alle poster fra din kunde tabel.

Niels
Avatar billede kabbak Professor
28. juli 2003 - 12:20 #4
ja nih, det er også mit forslag.

Vælg alle fra tabellen med kunde oplysninger og kun de som matcher fra aktivitetstabellen.
Avatar billede networst Nybegynder
28. juli 2003 - 12:20 #5
det har jeg prøvet uden held desværre... Hvis jeg kører den med kriterie kundenr=11, kommer den ud med alle de records hvor der er aktiviteter, og gentager dem igen og igen...
Avatar billede nih Novice
28. juli 2003 - 12:23 #6
Nu har jeg læst det andet spm.

lav en forsp med dine 2 tabeller kunder og perioder UDEN relationer og træk Kundenr;Navn;Periode

Herefter laver du en outerjoin som beskrevet ovenfor mellem din nye forsp. og aktiviteter tabellen evt. grupperet med antalAktiviteter.

Niels
Avatar billede networst Nybegynder
28. juli 2003 - 12:32 #7
det hjælper ikke. jeg får kun de 4 poster ud, hvor der er foretaget aktiviteter, og ikke dem der skal stå "0" i...
Avatar billede nih Novice
28. juli 2003 - 12:34 #8
prøv at sende den nih@mail1.stofanet.dk

zippet og i access 2000

Niels
Avatar billede networst Nybegynder
28. juli 2003 - 12:40 #9
sendt..
Avatar billede nih Novice
28. juli 2003 - 13:29 #10
Jeg har lavet 3 foresp.

Q_kunde_periode:
SELECT DISTINCT kunder.kundenr, kunder.navn, Md.Periode
FROM kunder, Md;
Q_aktiviteter_periode:
SELECT [Md].[Periode], ringerapport.*
FROM ringerapport INNER JOIN Md ON [ringerapport].[opkaldsdato]=[Md].[Dato];
Q_kunde_periode_antalaktiviteter:
SELECT Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode, Count(Q_Aktiviteter_periode.ordrenr) AS AntalOfordrenr
FROM Q_kunde_periode LEFT JOIN Q_Aktiviteter_periode ON Q_kunde_periode.Periode = Q_Aktiviteter_periode.Periode
GROUP BY Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode;

Niels
Avatar billede nih Novice
28. juli 2003 - 13:41 #11
Den skal selvfølgelig grupperes på ID

Q_kunde_periode_antalaktiviteter:

SELECT Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode, Count(Q_Aktiviteter_periode.ID) AS AntalOfID
FROM Q_kunde_periode LEFT JOIN Q_Aktiviteter_periode ON Q_kunde_periode.Periode = Q_Aktiviteter_periode.Periode
GROUP BY Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode;

Er det noget du kan bruge ???

Niels
Avatar billede nih Novice
28. juli 2003 - 13:54 #12
En join mere:

Q_kunde_periode_antalaktiviteter:

SELECT Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode, Count(Q_Aktiviteter_periode.ID) AS AntalOfID
FROM Q_kunde_periode LEFT JOIN Q_Aktiviteter_periode ON (Q_kunde_periode.kundenr = Q_Aktiviteter_periode.kundenr) AND (Q_kunde_periode.Periode = Q_Aktiviteter_periode.Periode)
GROUP BY Q_kunde_periode.kundenr, Q_kunde_periode.navn, Q_kunde_periode.Periode;
Avatar billede networst Nybegynder
28. juli 2003 - 13:57 #13
helt perfekt. Det er kraftedma lækkert det der...  Det er jo en million point værd... :) jeg takker mange gange...
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