[Access]Order by datum fout

Pagina: 1
Acties:

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Ik wil in een vrij lange sql query verschillende tabellen onder elkaar zetten, en uiteindelijk op datum sorteren, maar dit werkt niet helemaal goed... Het gaat om deze query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS datum, reeks, station, t2m 
FROM debilt_hirlam WHERE ((debilt_hirlam.fictievedatum Between #1/1/2003# And 
#12/31/2003#) And ((debilt_hirlam.voorspeltermijn)='+12'))
UNION ALL
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS datum, reeks, station, t2m 
FROM debilt_xhirlam WHERE ((debilt_xhirlam.fictievedatum Between #1/1/2003# 
And #12/31/2003#) And ((debilt_xhirlam.voorspeltermijn)='+12'))
UNION All
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS datum, reeks, station, t2m 
FROM debilt_debav WHERE ((debilt_debav.fictievedatum Between #1/1/2003# And 
#12/31/2003#) And ((debilt_debav.voorspeltermijn)='+12'))
UNION ALL 
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS datum, reeks, station, t2m 
FROM debilt_synops WHERE (debilt_synops.fictievedatum Between #1/1/2003# 
And #12/31/2003#);


Als er ik er nu overal, of alleen bij de laatste order by datum neerzet, dan doet hij dat helemaal niet goed... Als ik de query bekijk en handmatig oplopend laat sorteren op datum (waar ik overigens niets aan heb, het moet echt in de query gebeuren) dan sorteerd hij eerst op maand en dan pas op dag... dus je krijg eerst alle 1ste dagen van alle maanden onder elkaar, dan alle 2 dagen van alle maanden etc...

Ik weet niet of een andere format helpt, maar ik wil eigenlijk wel deze format gebruiken, omdat ik het resultaat van de query weergeef in een owc chart en de datum onder de x-as komt te staan.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Je zet datum om in een string en op deze string wordt gesorteerd. Voor het sorteren kun je het beste de datum nogmaals opnemen, maar nu zonder format.

Verder heb ik gezien je tabelnamen het vermoeden dat je datamodel wel een kleine verbetering zou kunnen gebruiken. Klopt het dat de 4 tabellen eigenlijk allemaal hetzelfde zijn? Waarom maak je niet 1 tabel met als extra kolom met daarin (een verwijzing naar) synops, debav, xhirlam of hirlam? Dan heb je deze union ook niet nodig.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
kan ik niet direct de format veranderen maar toch de datum behouden? Het gaat er namelijk om dat deze format onder de x-as komt te staan van de owc chart... Maargoed, ik kan natuurlijk ook gewoon alleen order by de echte datum doen :)

Verder klopt het dat de tabellen volledig overeenkomen op de waarden na, en zelfs de verwijzing bestaat al... Het probleem is alleen dat ik deze tabellen ook nog voor 9 andere stations heb (dus bv. dekooy_hirlam, dekooy_debav etc), Kan ik het beste 9 grote tabellen of zelfs 1 grote tabel maken?

Het kan ook zijn dat ik later de tabel automatisch wil updaten, kan ik dan wel automatisch zomaar ergens in de tabel waarden erbij schrijven?

owja, bedankt voor je reactie :)

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Ik heb de code naar dit veranderd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS Datum, fictievedatum, reeks, 
station, t2m FROM debilt_hirlam WHERE ((debilt_hirlam.fictievedatum Between 
#1/1/2003# And #12/31/2003#) And ((debilt_hirlam.voorspeltermijn)='+12')) 
order by fictievedatum
UNION ALL
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS Datum, fictievedatum, reeks, 
station, t2m FROM debilt_xhirlam WHERE ((debilt_xhirlam.fictievedatum Between 
#1/1/2003# And #12/31/2003#) And ((debilt_xhirlam.voorspeltermijn)='+12')) 
order by fictievedatum
UNION All
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS Datum, fictievedatum, reeks, 
station, t2m FROM debilt_debav WHERE ((debilt_debav.fictievedatum Between 
#1/1/2003# And #12/31/2003#) And ((debilt_debav.voorspeltermijn)='+12')) 
order by fictievedatum
UNION ALL 
SELECT Format$(fictievedatum, "dd-mm-yyyy hh") AS Datum, fictievedatum, reeks, 
station, t2m FROM debilt_synops WHERE (debilt_synops.fictievedatum Between 
#1/1/2003# And #12/31/2003#) order by fictievedatum


Maar hij orderd nog steeds op maand en niet eerst op dag :?
Datum
dd-mm-yyyy hh
01-08-2003 12
01-09-2003 12
01-10-2003 12
01-11-2003 12
01-12-2003 12
02-01-2003 12
02-02-2003 12
02-03-2003 12
02-04-2003 12

[ Voor 5% gewijzigd door DarkShadow op 02-04-2004 10:28 ]


  • Wom
  • Registratie: Januari 2002
  • Laatst online: 10:39

Wom

Hoe staat de landinstelling van je Windows ? Access wil hiermee nog wel eens overhoop liggen.

Het makkelijkste zou overigens zijn als je in de YYYYMMDD notatie zou werken, zo komt jaar voor maand en dag etc. bij het sorteren.

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Staat gewoon ingesteld op nederland, verder is het nu een beetje laat om met die notatie te werken, maar het zou toch gewoon met dd-mm-yyyy ook moeten werken?

Supervaag dat hij niet normaal wil ordenen...

  • Wom
  • Registratie: Januari 2002
  • Laatst online: 10:39

Wom

Maar zoals je de laatste uitvoer post klopt het wel :
Datum
dd-mm-yyyy hh
01-08-2003 12
01-09-2003 12
01-10-2003 12
01-11-2003 12
01-12-2003 12
02-01-2003 12
02-02-2003 12
02-03-2003 12
02-04-2003 12
Want 0108 en 0109 zijn kleiner als 0208 als je snapt wat ik bedoel. Denk dan ook dat de fout in de notatie zit.
Pagina: 1