Rekenen in Access

Status
Niet open voor verdere reacties.

PatrickSt

Gebruiker
Lid geworden
1 okt 2010
Berichten
38
Hallo,
hier ben ik weer, ik zit weer met een probleem ik moet een overzicht geven van de cursisten die betaald hebben (het totaal bedrag)

Code:
SELECT c.roepnaam, c.naam, cr.curs_code, SUM (betaald) AS Totaal
FROM c_regel1 AS cr, cursist AS c
WHERE cr.cursistnr = c.cursistnr
GROUP BY c.roepnaam, c.naam, cr.curs_code
ORDER BY c.naam;

deze code had ik gebruikt maar werkt niet hij telt de waarden van de cursisten niet op.

hopelijk weten julli het wel?

groeten,
Patrick
 
Waarom je aliassen gebruikt voor je tabellen is mij een raadsel, want dat lijkt mij nou niet echt handig in dit geval... en dan gebruik je geen tabelverwijzing voor het veld Betaald... waar komt dat vandaan?
 
Laatst bewerkt:
Code:
roepnaam	naam		curs_code	Totaal
BRAM		BROEKEN		DB3		3300
TANJA		KRIMPEN		DB3	
TANJA		KRIMPEN		OA2	
NIELS		NORBART		DB4		3600
NIELS		NORBART		OA2		2400
HENK		VOS		DB3		3300
HENK		VOS		OA2		2000

Dit is de uitvoer, ik moest die alliasses erbij zetten ik weet zelf ook niet waarom....
maar de bedoeling is dus dat je zoals bij Niels Norbart het totaal bedrag ziet dus €6000

Dat lukt me dus niet...
 
maar in welke tabel staat het veld Betaald?
 
Doet deze variant het ook niet?
Code:
SELECT c.roepnaam, c.naam, cr.curs_code, SUM(cr.[betaald]) AS Totaal
 
Je kunt het ook nog eens met een Inner Join proberen:

Code:
SELECT c.roepnaam, c.naam, cr.curs_code, SUM(cr.betaald) AS Totaal
FROM cursist AS c inner join c_regel1 AS cr on  c.cursistnr= cr.cursistnr 
GROUP BY c.roepnaam, c.naam, cr.curs_code
ORDER BY c.naam;
 
Die werken allebij niet hij geeft nog steeds geen totaal weer... hij laat gewoon de normale prijs zien die betaald is i.p.v. totaal
 
Kun je er een testdb van maken? Want dan wil ik het wel eens zelf uitproberen. Liefst in 2003 format, want ik gebruik geen 2007. Excel bestandjes mogen overigens ook, dan maak ik zelf de tabellen en query wel.
 
Zal er naar kijken!
 
Ik moet zeggen dat ik er zelf ook helemaal overheen heb gekeken; met de query zoals je 'm hebt gemaakt krijg je nooit een totaaloverzicht per cursist, omdat je de cursuscode erbij hebt staan. Deze variant doet het wel goed.

Code:
SELECT c.ROEPNAAM, c.NAAM, Sum(cr.BETAALD) AS Totaal
FROM cursist AS c INNER JOIN c_regel1 AS cr ON c.CURSISTNR = cr.CURSISTNR
GROUP BY c.ROEPNAAM, c.NAAM
ORDER BY c.NAAM;

Wil je de cursussen er bij hebben, dan zul je een Kruistabelquery moeten gebruiken. Iets als dit:
Code:
TRANSFORM Sum(cr.BETAALD) AS SomVanBETAALD
SELECT c.ROEPNAAM, c.NAAM, Sum(cr.BETAALD) AS Totaal
FROM cursist AS c INNER JOIN c_regel1 AS cr ON c.CURSISTNR = cr.CURSISTNR
GROUP BY c.ROEPNAAM, c.NAAM
PIVOT cr.CURS_CODE;
 
Heel hartelijk bedankt nu kan in teminste weer door werken:o

Dus het hele gedoe was de cursus codes? omdat die erbij stonden werkte de som functie in de query niet zoals die hoorde?
 
Als je Totalen wilt uitrekenen, wordt het totaal voor elke groep die je gebruikt berekend. Dus voor de Personen ziet het totaal er anders uit als voor Personen+Cursus. En dat is weer anders als je een totaal berekent op Personen+Cursus+Maand. Dat klopt inderdaad. UIteraard is de totaaltelling van de onderlinge records weer wel goed. Dus begin met één groep, en kijk van daaruit of je nog meer velden kunt toevoegen. In jouw geval kun je dus Achternaam + Voornaam gebruiken, omdat die nog steeds een uniek record opleveren. Met Min en Max kun je ook nog unieke records ophalen, dus daar kun je ook nog een beetje mee stoeien!
 
Oké bedankt voor je uitleg.. jij vertelt het een stuk makkelijker dan in het boekje staat :D
 
Once a teacher....
 
Nu je mij toch zo goed aan het helpen bent kan je mij dan mischien nog een keertje helpen?:rolleyes:

Ik moet een query maken met een sub query maar nu moet er ook een cijfer bij vanuit tabel c_regel1.

de sql die ik nu heb is ;
Code:
SELECT * FROM cursist
WHERE cursistnr < (SELECT cursistnr FROM cursist WHERE naam = 'Broeken')

Maar zoals ik het lees staat hier letterlijk:
Selecteer alles vanuit de tabel cursist waar cursistnummer kleiner is dan de ingegeven naam uit de subquery Broeken

En ik moet dat allemaal wel hebben maar ik moet dat er ook het cijfer bij gegeven worden. dus dat hij alles eruithaalt wat lager is dan Broeken zijn cursistnummer plus het cijfer was ze gehaald hebben. en daar kom ik niet uit. want als ik die sub eruit haal en alles er gewoon in zet bij de hoofdquery krijg ik alles wel 3 á 4 keer dubbel ofzo...

K*t SQL :o:P
 
Je vraag snap ik eerlijk gezegd niet helemaal.... En je vertaling van de query is ook een beetje anders dan je schetst.
Selecteer alles vanuit de tabel cursist waar cursistnummer kleiner is dan de ingegeven naam uit de subquery Broeken
Wat je met de subquery doet, is een selectie maken op het veld Cursusnummer. In dit geval wil je alle cursistnummers die kleiner zijn dan het cursistnummer van cursist Broeken. Die heeft nummer 64, dus je wilt alle cursisten zien met een curistnummer < 64. Dat zijn, als ik de query uitvoer, de cursistnummers 2 en 14. De rest is groter dan 64.
Op zichzelf een beetje zinloze query, lijkt mij. Dus wat wil je zien in die nieuwe query?
 
De query moet inderdaad alles cursisten weer geven die een lager nummer hebben dan cursist broeken, en dat krijg ik wel voor elkaar tenminste deed die net nog wel :) maar ik moet ook nog het cijfer dat die cursisten gehaald hebben op sommige curussen hebben, dus bijvoorbeeld cursistnr 2 heeft een 6 gehaald moet die ook weer gegeven worden
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan