Bekijk Volledige Versie : [SQL] sql count vraag?
Goedemorgen,
Ik heb een tabel:
id ouder kind
Deze tabel is gevuld:
1 persoon1 kind1
2 persoon1 kind2
3 persoon1 kind3
4 persoon2 kind4
5 persoon2 kind5
6 persoon3 kind6
7 persoon4 kind7
Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
persoon1 heeft 3 kinderen
persoon2 heeft 2 kinderen
persoon3 heeft 1 kinderen
persoon4 heeft 1 kinderen
Wat ik nu doe is:
select * from tabel
En vervolgens loop ik in code door de resultaatset en tel
programmatisch de kinderen. Alleen word m'n tabel nu erg groot en word
de resultaatset dus ook erg groot.
PS: ik kan helaas niet de tabel structuur veranderen, deze staat
namelijk vast.
PS2: het gaat hier om een mysql database, die nog geen subselects
ondersteund. (volgens mij versie 3.x)
Heeft iemand de gouden tip voor mij?
Alvast bedankt,
joop
Rene Pijlman
20/11/03, 10:15
Joop:
>Ik heb een tabel:
>
>id ouder kind
>
>Deze tabel is gevuld:
>
>1 persoon1 kind1
>2 persoon1 kind2
>3 persoon1 kind3
>4 persoon2 kind4
>5 persoon2 kind5
>6 persoon3 kind6
>7 persoon4 kind7
>
>Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
>
>persoon1 heeft 3 kinderen
>persoon2 heeft 2 kinderen
>persoon3 heeft 1 kinderen
>persoon4 heeft 1 kinderen
select ouder, count(kind)
from tabel
group by ouder
Getest met PostgreSQL.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
"Joop" <joop@ikbennietjoop.com> wrote in message
news:lkvorvsdcdpjjjskmod74c0se46ka7cl6d@4ax.com...
> Goedemorgen,
>
> Ik heb een tabel:
>
> id ouder kind
>
> Deze tabel is gevuld:
>
> 1 persoon1 kind1
> 2 persoon1 kind2
> 3 persoon1 kind3
> 4 persoon2 kind4
> 5 persoon2 kind5
> 6 persoon3 kind6
> 7 persoon4 kind7
>
> Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
>
> persoon1 heeft 3 kinderen
> persoon2 heeft 2 kinderen
> persoon3 heeft 1 kinderen
> persoon4 heeft 1 kinderen
>
select ouder, count(kind)
from tabel group by ouder;
On Thu, 20 Nov 2003 10:02:00 +0100, Rene Pijlman
<reply.in.the.newsgroup@my.address.is.invalid> wrote:
>Joop:
>>Ik heb een tabel:
>>
>>id ouder kind
>>
>>Deze tabel is gevuld:
>>
>>1 persoon1 kind1
>>2 persoon1 kind2
>>3 persoon1 kind3
>>4 persoon2 kind4
>>5 persoon2 kind5
>>6 persoon3 kind6
>>7 persoon4 kind7
>>
>>Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
>>
>>persoon1 heeft 3 kinderen
>>persoon2 heeft 2 kinderen
>>persoon3 heeft 1 kinderen
>>persoon4 heeft 1 kinderen
>
> select ouder, count(kind)
> from tabel
> group by ouder
>
>Getest met PostgreSQL.
Dank je Rene en jAnO!, het werkt helemaal. Eigenlijk stom dat ik daar
niet op gekomen was :-)
joop
"jAnO!" <j.groot@donotspam.kpn.com> wrote in message
news:bpi1g6$jbc$1@hdxl22.telecom.ptt.nl...
>
> "Joop" <joop@ikbennietjoop.com> wrote in message
> news:lkvorvsdcdpjjjskmod74c0se46ka7cl6d@4ax.com...
> > Goedemorgen,
> >
> > Ik heb een tabel:
> >
> > id ouder kind
> >
> > Deze tabel is gevuld:
> >
> > 1 persoon1 kind1
> > 2 persoon1 kind2
> > 3 persoon1 kind3
> > 4 persoon2 kind4
> > 5 persoon2 kind5
> > 6 persoon3 kind6
> > 7 persoon4 kind7
> >
> > Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
> >
> > persoon1 heeft 3 kinderen
> > persoon2 heeft 2 kinderen
> > persoon3 heeft 1 kinderen
> > persoon4 heeft 1 kinderen
> >
> select ouder, count(kind)
> from tabel group by ouder;
>
beter nog:
select ouder, ' heeft '|| count(kind) ||' kinderen'
from tabel
group by ouder;
>
Sjoerd Schreuder
20/11/03, 11:15
"jAnO!" wrote:
>
> "jAnO!" <j.groot@donotspam.kpn.com> wrote in message
> news:bpi1g6$jbc$1@hdxl22.telecom.ptt.nl...
> >
> > "Joop" <joop@ikbennietjoop.com> wrote in message
> > news:lkvorvsdcdpjjjskmod74c0se46ka7cl6d@4ax.com...
> > > Goedemorgen,
> > >
> > > Ik heb een tabel:
> > >
> > > id ouder kind
> > >
> > > Deze tabel is gevuld:
> > >
> > > 1 persoon1 kind1
> > > 2 persoon1 kind2
> > > 3 persoon1 kind3
> > > 4 persoon2 kind4
> > > 5 persoon2 kind5
> > > 6 persoon3 kind6
> > > 7 persoon4 kind7
> > >
> > > Is het mogelijk om met 1 sql het volgende resultaat te krijgen:
> > >
> > > persoon1 heeft 3 kinderen
> > > persoon2 heeft 2 kinderen
> > > persoon3 heeft 1 kinderen
> > > persoon4 heeft 1 kinderen
> > >
> > select ouder, count(kind)
> > from tabel group by ouder;
> >
>
> beter nog:
>
> select ouder, ' heeft '|| count(kind) ||' kinderen'
> from tabel
> group by ouder;
select ouder || ' heeft ' || aantal || ' kinderen' as resultaat from
(select ouder, count(kind) as aantal
from tabel
group by ouder
);
De query ziet er ook gelijk een stuk lastiger uit. ;-)
Sjoerd Schreuder