Toon posts:

[MySQL 3.23.49 ] Count & Select in goede query / queries

Pagina: 1
Acties:
  • 29 views sinds 30-01-2008

Verwijderd

Topicstarter
Twee tabellen (persoon en status).

[persoon]
-PersoonID (int)
-Type (int)
-Naam (varchar)
-Status (int)

[status]
-Status (int)
-Omschrijving (varchar)

Hoe krijg ik in een simpele query als output:
-status.Status
-status.Omschrijving
-aantal personen met deze status

Stel: ik heb in de tabel [status] 10, 20, 30 staan.
Verder heb ik 10 personen in [persoon] staan.
7 personen hebben in hun -Status veld de waarde 10
3 personen hebben in hun -Status veld de waarde 20
0 personen hebben in hun -Status veld de waarde 30

Hoe krijg ik de volgende output?

Record 1
---------
Status = 10
Omschrijving = 10omschrijf
Aantal = 7
---------

Record 2
---------
Status = 20
Omschrijving = 20omschrijf
Aantal = 3
---------

Record 3
---------
Status = 30
Omschrijving = 30omschrijf
Aantal = 0
---------

En hoe zou ik eventueel de output kunnen beperken tot personen van een bepaald Type?

// EDIT
Ik bedenk me dat deze post wellicht aangemerkt wordt als script request. Excuses dan hiervoor.

[ Voor 6% gewijzigd door Verwijderd op 20-05-2004 13:32 ]


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
Select 
  count(*), 
  status.status, 
  max(status.omschrijving) 
from 
  persoon, 
  status 
where 
  persoon.status = status.status 
group by 
  status


De max(omschrijving) is omdat in de meeste SQL-dialecten je alleen een veld kunt selecteren i.c.. een group by, als er ook een Aggregaat-functie omheen staat. In dit geval is omschrijving voor alle statussen gelijk, dus Max(omschrijving) ook.
offtopic:
Ik weet niet of dit in MySQL ook zo is, maar bovenstaand SQL-statement zou moeten werken


Voor personen van een bepaald type kun je
code:
1
  and persoon.type = 1

toevoegen aan de where-clause.

Verwijderd

Topicstarter
Dank! Ik was ook ongeveer zover gekomen (alleen véél minder efficient), en liep toen tegen hetzelfde probleem aan als nu: er zijn namelijk statusrecords die nog niet worden vertegenwoordigd door personen. Oftwel, record 3 uit het voorbeeld staat niet in mijn result.
Heb zitten klooien met een LEFT JOIN ipv 'harde koppeling', maar dit leverde niet het gewenste resultaat op. Ideeën?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Ik krijg het idee dat je een stuk basiskennis mist. Geen probleem, maar het maakt het oplossen van je probleem voor jezelf een stuk lastiger.

Kijk eens op http://www.w3schools.com of in de forum-FAQ: een gedeelte over joins :)

FFrenzy heeft je al een heel eind op weg geholpen. Het laatste stuk moet je zelf voor elkaar kunnen krijgen met de eerder genoemde links.

Ik krijg namelijk ook erg het idee dat je jouw probleem neer zet, en hoopt dat iemand anders dit voor jou gaat oplossen door je het goede antwoord te geven. :) Hier is Programming & Webscripting in ieder geval niet voor bedoeld.

Deze gaat in ieder geval dicht. Succes met je queries. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.