Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#11

AW: Access SQL performance

  Alt 31. Mär 2023, 18:25
Drei Versuche:
SQL-Code:
select
  top 30
  ABFStatKundenNr,
  total
from
(
  select
    ABFStat.ABFStatKundenNr,
    sum(ABFStat.ABFStatUmsatz) as total
  from ABFStat
  where ABFStat.ABFStatDatum > #01/01/2023#
  and exists
  (
    select 1
    from sPersKto
    where sPersKto.PersKtoArt = 68
    and sPersKto.PersKtoNummer = ABFStat.ABFStatKundenNr
  )
  group by ABFStat.ABFStatKundenNr
)
order by total desc
SQL-Code:
select
  top 30
  ABFStatKundenNr,
  total
from
(
  select
    a.ABFStatKundenNr,
    sum(a.ABFStatUmsatz) as total
  from
    ABFStat a,
    sPersKto b
  where b.PersKtoNummer = a.ABFStatKundenNr
  and b.PersKtoArt = 68
  and a.ABFStatDatum > #01/01/2023#
  group by a.ABFStatKundenNr
)
order by total desc;
SQL-Code:
select
  top 30
  ABFStatKundenNr,
  total
from
(
  select
    a.ABFStatKundenNr,
    sum(a.ABFStatUmsatz) as total
  from
    (select ABFStatKundenNr, ABFStatUmsatz from ABFStat where ABFStatDatum > #01/01/2023#) a, -- Datenmengen möglichst früh eingrenzen
    (select PersKtoNummer from sPersKto where PersKtoArt = 68) b
  where b.PersKtoNummer = a.ABFStatKundenNr -- und erst dann die Teilmengen miteinander verbinden
  group by a.ABFStatKundenNr
)
order by total desc
Und zur Vorbeugung:
Zitat von himitsu (aus einem anderen Thread zum gleichen Themenkomplex):
IHHHHHH, nicht so.

Access kann auch JOINs in Richtig.
Weiß ich, so geht aber auch und ist für ich leichter verständlich

Fehler im From?
SQL-Code:
select
  Sum(Spaltenname) as AliasName -- as vor den Aliasnamen
from TabellenName Aliasname -- kein as vor den Aliasnamen
group by Spaltenname
Manche Datenbanken kommen in beiden Fällen mit dem AS zurecht.
Manche Datenbanken kommen in beiden Fällen ohne das AS zurecht.
Manche Datenbanken kommen nur im ersten Fall mit dem AS zurecht, aber nicht im zweiten Fall.

Das könnte bei Access die Ursache für den 'Syntaxfehler in FROM-Klausel' sein.
  Mit Zitat antworten Zitat