Query filteren met 'distinct'

Status
Niet open voor verdere reacties.

gebo51

Gebruiker
Lid geworden
30 mei 2007
Berichten
100
Beste forumleden,

In een query wil ik dubbele waarden uitfilteren op het veld 'opdrachtgever'
De sql code van de query is als volgt:

Code:
SELECT Orders.Orderdatum,  Orders.Opdrachtgever, Orders.Opdrvoorvoegsel, Orders.Aanhef, Orders.Kontaktpersoonvoornaam, Orders.Kontaktpersoonachternaam, Orders.Opdrachtgeveradres, Orders.Opdrachtgeverpostcode, Orders.Opdrachtgeverplaats
FROM Orders
WHERE (((Orders.Orderdatum) Is Not Null And (Orders.Orderdatum) Between [Forms]![Dialoogvenster opdrachtgever_etiketten]![Begindatum] And [Forms]![Dialoogvenster opdrachtgever_etiketten]![Einddatum]));

Waar plaats ik nu in de code het woord 'distinct' zodat het filteren dus geschiedt op het veld 'opdrachtgever'

Alvast bedankt voor jullie advies
 
Gelijk na het woord SELECT, dus:
SELECT DISTINCT Orders.Orderdatum, Orders.Opdrachtgever, ......
 
Bedankt Silkcom voor je snelle reactie.

Ik had jouw suggestie al geprobeerd. Er wordt wel gefilterd maar toch hou ik dubbele waarden over. Vandaar dat ik er vanuit ging dat de ontdubbing op een bepaald veld geschiedde.

Nog andere suggesties?
 
Is het zo dat je per oderdatum/opdrachtgever een en hetzelfde record meer keer voorkomt?
Probeer dan eens de syntax SELECT DISTINCTROW .....
Dit zou eigenlijk niet voor mogen komen. Waarschijnlijk is dan een van de andere velden anders.
 
Laatst bewerkt:
DISTINCT kan maar op één plek: meteen achter de SELECT.
Als je distinct gebruik dan worden dubbele records uitgefilterd, niet dubbele velden!
De records waarvan alle velden achter de SELECT een gelijke waarde hebben worden dus uitgefilterd.
 
Bedankt Silkcom en Bartuls voor jullie reactie.

Alle records, die zijn gebaseerd op de query zijn uniek, echter de data in het veld 'opdrachtgever' is niet uniek d.w.z. de naam van de opdrachtgever komt meerdere malen in de reeks voor

Ik dacht deze dubbele namen (opdrachtgevers) er met distinct eruit te kunnen filteren maar dat lukt mij (gedeeltelijk) niet.
Zonder distinct heb ik 159 records, met distinct 68. Er wordt dus wel gefilterd maar toch blijven er dubbele namen van opdrachtgevers over.

ps.

De syntax SELECT DISTINCTROW filtert in zijn geheel niet.
 
Een belangrijke vraag: wat wil je precies met de query gaan doen?
Indien het de bedoeling is om etiketten af te drukken, dan kun je de orderdatum uit je query halen, dus dan wordt de syntax:

Code:
SELECT DISTINCT Orders.Opdrachtgever, Orders.Opdrvoorvoegsel, Orders.Aanhef, Orders.Kontaktpersoonvoornaam, Orders.Kontaktpersoonachternaam, Orders.Opdrachtgeveradres, Orders.Opdrachtgeverpostcode, Orders.Opdrachtgeverplaats
FROM Orders
WHERE (((Orders.Orderdatum) Is Not Null And (Orders.Orderdatum) Between [Forms]![Dialoogvenster opdrachtgever_etiketten]![Begindatum] And [Forms]![Dialoogvenster opdrachtgever_etiketten]![Einddatum]));
 
Beste Silcom,

Het is gelukt. Ik houd nu 31 records over:thumb:

Wil je me nog even uitleggen, waarom het wel lukt als je dus de 'orderdatum' uit de selectrij haalt, terwijl het veld 'orderdatum' wel gewoon in de query blijft bestaan met het criterium?
(ik zie in de query dat het veld orderdatum nu uitgevinkt is)

Bedankt
 
Dan moet je het standaard access ontwerpscherm voor queries even verlaten en naar de SQL kijken.

Een query is als volgt opgebouwd
SELECT veld1, veld2, etc
FROM table1, tabel2 etc.
WHERE voorwaarde 1 AND voorwaarde 2 etc.
ORDER BY veld1, veld2 etc.

De DISTINCT werkt alleen op de velden (en dan alle velden) achter het woord SELECT, niet over de velden achter de WHERE clausule.
 
Dank je Bartuls

Het is me duidelijk. Als het veld 'orderdatum' er bij komt in de selectrij dan is dat dus extra data om uit te filteren, waardoor de afwijking ontstaat.;)

Allen bedankt > ik kan weer verder:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan