/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Hjælp til COUNT
Fra : Torben Jensen


Dato : 18-10-03 19:37

Hej NG!

Jeg har en access database som indeholder oplysninger om indkvartering på et
kursussted.

I databasen er der en tabel - "indkvartering" som indeholder to felter -
"værelsesnr" og "medlemsnr"
Et værelse kan have 0, 1 eller 2 logerende.

eks:
værelsesnr medlemsnr
312 0
312 0
313 15
313 15
314 20
314 0
315 0
315 0

For hvert værelse ønsker jeg at vide, hvor mange personer der er
indlogeret - altså om der er 0, 1 eller 2 medlemmer på det pågældende
værelse.

Den liste jeg ønsker at få vil se således ud:
værelsesnr Antal_logerende
312 0
313 2
314 1
315 0

Kan det lade sig gøre og i giver fald hvordan?

Jeg håber I kan hjælpe.

M.v.h.
Torben Jensen



 
 
Kristian Damm Jensen (20-10-2003)
Kommentar
Fra : Kristian Damm Jensen


Dato : 20-10-03 09:13

"Torben Jensen" <no@spam.dk> skrev i en meddelelse
news:bms16m$29e4$1@news.cybercity.dk...
> Hej NG!
>
> Jeg har en access database som indeholder oplysninger om indkvartering på
et
> kursussted.
>
> I databasen er der en tabel - "indkvartering" som indeholder to felter -
> "værelsesnr" og "medlemsnr"
> Et værelse kan have 0, 1 eller 2 logerende.
>
> eks:
> værelsesnr medlemsnr
> 312 0
> 312 0
> 313 15
> 313 15
> 314 20
> 314 0
> 315 0
> 315 0
>
> For hvert værelse ønsker jeg at vide, hvor mange personer der er
> indlogeret - altså om der er 0, 1 eller 2 medlemmer på det pågældende
> værelse.
>
> Den liste jeg ønsker at få vil se således ud:
> værelsesnr Antal_logerende
> 312 0
> 313 2
> 314 1
> 315 0
>
> Kan det lade sig gøre og i giver fald hvordan?

Ja, men det vil i høj grad forsimple processen, hvis du også har en tabel
hvor alle tilgællngelige værelser står nævnt netop én gang. Specielt hvis du
samtidig vil fjerne den irriterende markering af ledige pladser med 0.

I så fald kan du bruge

select værelse.værelsernr,
isnull(count(indlogering.medlemsnr), 0) as Antal_logerende
from værelse
left outer join indlogering
on værelse.værelsernr = indlogering.værelsenr
group by værelse.værelsenr

Hvis du insisterer på, at du ikke kan lave om i din datastruktur, så kan du
opnå det samme ved at lave to views der opfylder de nævnte betingelser, og
så lave bruge dem i ovennævnte join i stedet for.

--
Kristian Damm Jensen
damm (at) ofir (dot) dk



Torben Jensen (20-10-2003)
Kommentar
Fra : Torben Jensen


Dato : 20-10-03 11:28

>
> Ja, men det vil i høj grad forsimple processen, hvis du også har en tabel
> hvor alle tilgællngelige værelser står nævnt netop én gang. Specielt hvis
du
> samtidig vil fjerne den irriterende markering af ledige pladser med 0.
>
> I så fald kan du bruge
>
> select værelse.værelsernr,
> isnull(count(indlogering.medlemsnr), 0) as Antal_logerende
> from værelse
> left outer join indlogering
> on værelse.værelsernr = indlogering.værelsenr
> group by værelse.værelsenr
>
> Hvis du insisterer på, at du ikke kan lave om i din datastruktur, så kan
du
> opnå det samme ved at lave to views der opfylder de nævnte betingelser, og
> så lave bruge dem i ovennævnte join i stedet for.
>
> --
> Kristian Damm Jensen
> damm (at) ofir (dot) dk

Hej Kristian!

Tak for dit svar, jeg har ventet med stor spænding om jeg ville få nogle
brugbare tilbagemeldinger.
Datastrukturen irriteret også mig, men det er desværre ikke op til mig at
ændre i den - jeg skal bare bruge den.
Derfor er det sidste du foreslår mest interessant, kan jeg bede dig om at
uddybe det lidt.

Hvad mener du f.eks med to views og hvordan laver man det?

Tak for hjælpen.
M:v.h.
Torben



Kristian Damm Jensen (20-10-2003)
Kommentar
Fra : Kristian Damm Jensen


Dato : 20-10-03 12:14

"Torben Jensen" <no@spam.dk> skrev i en meddelelse
news:3f93b83f$0$54784$edfadb0f@dread11.news.tele.dk...
> >
> > Ja, men det vil i høj grad forsimple processen, hvis du også har en
tabel
> > hvor alle tilgællngelige værelser står nævnt netop én gang. Specielt
hvis
> du
> > samtidig vil fjerne den irriterende markering af ledige pladser med 0.
> >
> > I så fald kan du bruge
> >
> > select værelse.værelsernr,
> > isnull(count(indlogering.medlemsnr), 0) as Antal_logerende
> > from værelse
> > left outer join indlogering
> > on værelse.værelsernr = indlogering.værelsenr
> > group by værelse.værelsenr
> >
> > Hvis du insisterer på, at du ikke kan lave om i din datastruktur, så kan
> du
> > opnå det samme ved at lave to views der opfylder de nævnte betingelser,
og
> > så lave bruge dem i ovennævnte join i stedet for.
> >
> > --
> > Kristian Damm Jensen
> > damm (at) ofir (dot) dk
>
> Hej Kristian!
>
> Tak for dit svar, jeg har ventet med stor spænding om jeg ville få nogle
> brugbare tilbagemeldinger.
> Datastrukturen irriteret også mig, men det er desværre ikke op til mig at
> ændre i den - jeg skal bare bruge den.
> Derfor er det sidste du foreslår mest interessant, kan jeg bede dig om at
> uddybe det lidt.
>
> Hvad mener du f.eks med to views og hvordan laver man det?

Med forbehehold for at det er længe siden jeg har brugt views i praksis og
min beherskelse asf syntaksen derfor godt kan være lidt usikker, så skal du
lave et view

create view værelse
as
select distinct værelse
from indlogering

og et andet

create view indlogering_god
as
select * from indlogering
where member <> 0

Disse to vioews skal du så benytte i det join har lavet ovenfor.


--
Kristian Damm Jensen
damm (at) ofir (dot) dk



Mette Stephansen (22-10-2003)
Kommentar
Fra : Mette Stephansen


Dato : 22-10-03 11:48

Hej !

Nu er det godt nok en Oracle jeg sidder med, men mit forslag ville
være dette, så du slipper for at definere de 2 views:

select a.room, antal from
(select distinct room from testroom) a,
       (select room, count(room) as antal from testroom where beboer <>
0 group by room) b
where a.room = b.room (+);

mvh
Mette

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste