Toon posts:

[Access] Laatste datum

Pagina: 1
Acties:
  • 163 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Volgende probleem:

Ik heb een query die uit 4 tabellen de laatste datum moet halen.

Nu doe ik dit door gewoon het veld datum op te vragen van de 4 tabellen en deze aflopend te sorteren. Zo is het eerste record de laatste datum.

Maar bij tabellen die al heel veel data hebben duurt deze query veels te lang. Is er een handigere manier om de laatste datum uit deze tabellen te halen?


Extra informatie: Elke datum komt maar 1x voor.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Ligt er een index op dat datum-veld? Zonee, is het opportuun om er een index op te leggen?
Je kan ook eens kijken naar de MAX() functie.

https://fgheysels.github.io/


Verwijderd

Topicstarter
De datum is geindexeerd dus dat werkt al optimaal.

Ik ben er nu wel achter waarom het zo erg lang duurt. Hij neemt eerst een datum van tabel 1,2 en 3 en daarna een rij met alle data van tabel 4. Vervolgens neemt hij de volgende datum van tabel 3 en gaat dan weer verder met eenzelfde datum van tabel 1,2 en 3 en daarna weer tabel 4.

Wat ik dus eigenlijk wil dat hij doet is dat die 4 datum-velden totaal onafhankelijk van elkaar laten verzamelen in die query.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Maw, je hebt een cartesiaans product. Je select uit 4 tabellen in 1 query zonder dat je die tabellen joined?

Ik zou het zo doen:
code:
1
2
3
4
5
6
7
8
9
10
SELECT max(dedatum) AS dedatum FROM
(
SELECT MAX(t1.datum) AS dedatum FROM t1
UNION
SELECT MAX(t2.datum) AS dedatum FROM t2
UNION
SELECT MAX(t3.datum) AS dedatum FROM t3
UNION
SELECT MAX(t4.datum) AS dedatum FROM t4
)


Eventueel zo je ook eens kunnen kijken of dit sneller is:
code:
1
2
3
4
5
6
7
SELECT max(dedatum) FROM
(
SELECT TOP 1 t1.datum AS dedatum FROM t1 ORDER BY t1.datum DESC
UNION
SELECT TOP 1 t2.datum AS dedatum  FROM t2 ORDER BY t2.datum DESC
UNION
....

[ Voor 7% gewijzigd door whoami op 20-04-2004 15:45 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Wat je volgens mij krijgt met deze code is dat je van de 4 tabellen de hoogste datum zoekt. Maar ik wil 4 resultaten, dus van elke tabel de hoogste datum.

Dit doe ik in een query om zo deze data te beoordelen op 1 formulier.

Het lukt me nu wel om 4 resultaten te krijgen dankzij jouw hulp, maar gegevens uit andere tabellen lijken nu niet meer toegevoegd te kunnen worden aan deze query.

Het werkt jammergenoeg ook nog net iets te langzaam naar mijn smaak.

Misschien nog een ander idee? Kan het ook buiten een query om?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Euh, doe het dan met 4 aparte queries.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Inderdaad, de vertragende factor is de combinatie van de vier tabellen in de query.

Ik heb nu 4 query's en 4 subformulieren in m'n hoofdformulier. Werkt supersnel en makkelijk.

Bedankt!
Pagina: 1