Rekenquery

Status
Niet open voor verdere reacties.

roland81

Gebruiker
Lid geworden
4 okt 2011
Berichten
7
Nou ik zal vast geen accessexpert worden want ik loop alweer vast op de volgende query
SELECT stad.naam, stad.inwoners, land.inwoners
FROM land INNER JOIN stad ON (stad.id = land.hoofdstad_id) AND (land.id = stad.land_id);

ik wil graag de inwoners van de stad delen door de inwoners van het land maar ik krijg hem niet kloppend heeft iemand suggesties?

Alvast bedankt

gr Roland
 
SELECT stad.naam, stad.inwoners, land.inwoners, stad.inwoners/land.inwoners as "gedeelte in hoofdstad" ...
 
Om te beginnen: waarom een veld Inwoners in de tabel Land? Je hebt al een veld Inwoners in Stad, en dat betekent automatisch al dat je het aantal bewoners per land kunt berekenen door de inwoners van alle steden per land op te tellen. En dat is de enige juiste manier om inwoners per land te registreren. Met jouw methode zit je bijna altijd in de problemen want nu moet je elke keer als er in een stad een mutatie is (en dat is bijna dagelijks) het totaal opnieuw met de hand uitrekenen, en vervolgens in de tabel Land aanpassen. Een onzinnige werkwijze, lijkt mij.
Eén van de hoofdregels in een goede database is, dat je gegevens die je kunt berekenen niet opslaat in een tabel. En dit is daar een schoolvoorbeeld van.

Je query ziet er dus heel anders uit dan je hem nu maakt. Om te beginnen: met de functie DSUM kun je een totaal berekenen op basis van een criterium. Dat is in dit geval het veld LandID. Ik zou het zo doen:

Code:
SELECT land.Land, stad.Stad, stad.Inwoners, CDbl(DSum("[Inwoners]","[Stad]","[Land_ID]=" & [LandID])) AS [Totaal Land], Sum([Inwoners])/DSum("[Inwoners]","[Stad]","[Land_ID]=" & [LandID]) AS Gem
FROM land INNER JOIN stad ON land.LandID = stad.Land_ID
GROUP BY land.Land, stad.Stad, stad.Inwoners, land.LandID
ORDER BY land.Land;
 
Om te beginnen: waarom een veld Inwoners in de tabel Land? Je hebt al een veld Inwoners in Stad, en dat betekent automatisch al dat je het aantal bewoners per land kunt berekenen door de inwoners van alle steden per land op te tellen

Als alle inwoners in steden wonen en alle steden per land zijn vastgelegd is dat juist.
Echter dat hoeft niet zo te zijn.
Je maakt dus een aanname.
Ik zou die aanname eerst eens op validiteit testen ;)

Tardis
 
En jij denkt dat TS aparte tabellen onderhoudt voor dorpen? Doe eens normaal....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan