query loopt niet zoals ik het wil

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
ik heb een recordset met een veld dat volgende waarden kan bevatten: "J", "C" of "A"
maak ik volde de query:

SELECT Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
GROUP BY Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Brieven, Betalingen.BETAALD
HAVING (((Betalingen.BETAALD)=False))
ORDER BY Fiche.NAAM;

er kunnen dus records van eenzelfde persoon zijn, maar waarvan het bewuste veld nu eens "A" of "C" of "J" kan zijn
in de lijst, na het uitvoeren van de query, worden deze netjes samen getoond (gegroepeerd per persoon)

Als ik nu de query aanpas en de records niet wil zien waarvan het veld "A" is (en dus wel "C" of "J") dan groepeert de query de namen niet meer
en krijg ik een lijst te zien waar personen van "C" en "J" niet meer gegroepeerd worden... deze staan dan apart
Wat doe ik verkeerd?

SELECT Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Op_naam_van
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
GROUP BY Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Brieven, Betalingen.BETAALD, Betalingen.Op_naam_van
HAVING (((Betalingen.BETAALD)=False) AND ((Betalingen.Op_naam_van)<>"A"))
ORDER BY Fiche.NAAM;


Bedankt
 
Hier kunnen we niets mee zonder voorbeeld document. Plaats een (uitgeklede) Excel sheet.
 
Waarom moet TS een uitgeklede Excel-sheet plaatsen als het een vraag is die over Access gaat :rolleyes:?
 
Hoi Jean-Paul. In een groepsquery kan je de WHERE clause gebruiken en HAVING. De where clause filtert de individuele records voor ze gegroepeerd worden, de HAVING groepeert eerst en toetst dan het groepsresultaat aan het criterium. In jou geval wil je alleen de records meenemen die individueel <> 'A' zijn. 'A' is immers geen resultaat van een groepsbewerking (som, gemiddelde, max, min, ...) en hoort dus in der WHERE en niet in de HAVING

Code:
SELECT Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Op_naam_van
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
WHERE (((Betalingen.BETAALD)=False) AND ((Betalingen.Op_naam_van)<>"A"))
GROUP BY Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Brieven, Betalingen.BETAALD, Betalingen.Op_naam_van
 
ORDER BY Fiche.NAAM;

of , aangezien je geen groepsbewerking doet:

Code:
SELECT distinct Fiche.NAAM, Fiche.KODE, Fiche.Aantal_brieven, Fiche.derde, Betalingen.Op_naam_van
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
WHERE (((Betalingen.BETAALD)=False) AND ((Betalingen.Op_naam_van)<>"A"))
ORDER BY Fiche.NAAM

of als je ze gegroepeerd per fiche naam wil:

Code:
SELECT Fiche.NAAM, Fiche.KODE, sum(Fiche.Aantal_brieven) as Totaal_Aantal_Brieven,  Betalingen.Op_naam_van
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
WHERE (((Betalingen.BETAALD)=False) AND ((Betalingen.Op_naam_van)<>"A"))
GROUP BY Fiche.NAAM, Fiche.KODE, Betalingen.Op_naam_van
ORDER BY Fiche.NAAM
 
Laatst bewerkt:
als ik je 3 sql's uitprobeer krijg ik steeds hetzelfde resultaat:

Bekijk bijlage 366352

Je ziet dat de kode (en de naam) van de eerste 2 records dezelfde zijn, Op_naam_van is de ene keer C en de andere keer L
A wordt niet getoond, wat correct is, maar
De eerste 2 records zouden samen moeten genomen worden als 1 naam

Hopelijk is het wat duidelijk

Bedankt
JP
 
Dan mag je niet groeperen op het veld OP_naam_van:

Code:
SELECT Fiche.NAAM, Fiche.KODE, sum(Fiche.Aantal_brieven) as Totaal_Aantal_Brieven
FROM Betalingen INNER JOIN Fiche ON Betalingen.Kode = Fiche.KODE
WHERE (((Betalingen.BETAALD)=False) AND ((Betalingen.Op_naam_van)<>"A"))
GROUP BY Fiche.NAAM, Fiche.KODE
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan