Acties:
  • 0 Henk 'm!

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 05-08 11:09

bazs2000

Pixels zo groot als een atoom

Topicstarter
Ik zit met een probleem waar ik maar niet uit kom.

Ik heb een tabel met daarin dubbele records (klantorders). Iedere klant kan meerdere orders hebben en ik wil een selectie maken van alle eerste klantorders.

De tabelstructuur ziet er als volgt uit:

Visual Basic .NET:
1
2
3
4
Klantnaam   Ordersoort  Orderdatum  Leverdatum
Pietje Puk  Brood       01-01-2009  02-01-2009
Pietje Puk  Leverpastij 08-01-2009  09-01-2009
Pietje Puk  Paas-eieren 11-01-2009  12-01-2009


Als ik een query uitvoer die alle dubbele records ophaalt dan is dat niet genoeg. Ik wil alle eerste orders ophalen. Nu moet ik door middel van handmatige selectie de eerste order bepalen wat niet te doen is gezien de grote berg werk wat hieruit ontstaat en als het even kan dan wil ik dit door middel van een stukje code laten doen.

Beter zou zijn (uit performance-oogpunt) om een extra veld in de tabel te maken die ik door de query laat vullen (kan ik in het vervolg de reeds gevulde velden achterwege laten).

Mijn vraag is nu:

Wat kan ik doen om van iedere klant de oudste record te markeren? Ik krijg het maar niet voor elkaar om van iedere set records (Pietje Puk) de oudste eruit te halen.

Krankzinnige muziek vind je hier.


Acties:
  • 0 Henk 'm!

Verwijderd

Maak een aggregatiequery (Som-tekentje rechtsboven in je menubalk). Selecteer 'Group by' voor het veld met de namen en 'Min' (minimum) voor het veld met de datums.

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Probleem is dat je dan de overige velden nog niet hebt. :)
SELECT *
FROM tabel
WHERE tabel.orderdatum=(select min(Orderdatum) from tabel as tbl where [tbl.klant]=[tabel.klant]);

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

Verrek...daarmee heb ik meteen de oplossing voor een selectieprobleem waar ik al meer dan een jaar mee loop te klooien!

Bedankt! _/-\o_

Acties:
  • 0 Henk 'm!

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 05-08 11:09

bazs2000

Pixels zo groot als een atoom

Topicstarter
@ Lustrucru:

Dat is de oplossing waar ik naar op zoek ben. Ik snap niet waarom ik hier niet zelf op ben gekomen maar goed. Ik kwam er maar niet uit en ben druk bezig geweest met klooien en het niet snappen. Thanks.

Kan ik meteen deze aanpassen zodat ik de oudste orders kan markeren, Kan ik de orders meteen nummeren.

(Ik ben namelijk ook bezig met een project waar het soms nodig is om de tweede + derde (Of verzin een combinatie) order te pakken).

Visual Basic:
1
2
3
4
SELECT *
FROM tabel
WHERE tabel.orderdatum=(select min(Orderdatum) from tabel as tbl where [tbl.klant]=[tabel.klant]) 
AND tabel.orderid>1;


Nouja, of verzin een combinatie. :)
Ik ben informatie-analist en moet soms de meest zieke informatie bij elkaar zien te harken. :P

Krankzinnige muziek vind je hier.