AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Access SQL performance

Ein Thema von HCB · begonnen am 31. Mär 2023 · letzter Beitrag vom 1. Apr 2023
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#1

AW: Access SQL performance

  Alt 31. Mär 2023, 13:01
Ohne das jetzt gerade mit Access probieren zu können:
SQL-Code:
Select Top 30
a.ABFStatKundenNr,
sum(a.ABFStatUmsatz) as total
from ABFStat a
JOIN sPersKto b ON
  (b.PersKtoNummer = a.ABFStatKundenNr) and
  (b.PersKtoArt = 68)
WHERE a.ABFStatDatum > #01/01/2023#
group by a.ABFStatKundenNr
order by total desc
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#2

AW: Access SQL performance

  Alt 31. Mär 2023, 14:56
Hallo Uwe,

Danke, dein sql code mit join bringt ebenfalls die Fehlermeldung 'Syntaxfehler in FROM-Klausel'.
Normal sieht das in Ordnung aus, ich kann nicht erkennen woran es liegen könnte.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#3

AW: Access SQL performance

  Alt 31. Mär 2023, 15:27
Ich arbeite eigentlich nicht mit Access, aber vielleicht geht dies ja besser:
SQL-Code:
Select Top 30
a.ABFStatKundenNr,
sum(a.ABFStatUmsatz) as total
from ABFStat as a
JOIN sPersKto as b ON
  (b.PersKtoNummer = a.ABFStatKundenNr) and
  (b.PersKtoArt = 68)
WHERE a.ABFStatDatum > #01/01/2023#
group by a.ABFStatKundenNr
order by sum(a.ABFStatUmsatz) desc
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#4

AW: Access SQL performance

  Alt 31. Mär 2023, 15:51
Danke Uwe,

verflixt es kommt der gleiche Fehler 'Syntaxfehler in FROM-Klausel'.
Kann in der FROM Klausel haber nicht erkennen was daran falsch sein sollte. Vielleicht ist auch die Fehlermeldung nur pauschal und hat gar nichts mit der FROM Klausel zu tun?

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#5

AW: Access SQL performance

  Alt 31. Mär 2023, 16:28
Kannst du die DB zur Verfügung stellen? Geht auch mit abgespeckten Testdaten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#6

AW: Access SQL performance

  Alt 31. Mär 2023, 16:47
Ich habe leider keine neutrale DB zur Verfügung. In der Originalen sind ca. 70.000 Einträge in der ABFStat und ca. 18.000 in der sPersKto.
Da sich aber in der sPersKto die Kunden befinden, müsste ich alle datengeschützten Daten erst aus der Tabelle löschen und in der ABFStat ebenfalls. Das ist etwas aufwendig.
Ich hoffe, du hast Verständnis dafür. Aber vielen Dank, das du dich dafür einbringen willst.

LG Harry
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Access SQL performance

  Alt 31. Mär 2023, 17: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
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Access SQL performance

  Alt 1. Apr 2023, 13:50
Ich arbeite eigentlich nicht mit Access, aber vielleicht geht dies ja besser:
SQL-Code:
Select Top 30
a.ABFStatKundenNr,
sum(a.ABFStatUmsatz) as total
from ABFStat as a
JOIN sPersKto as b ON
  (b.PersKtoNummer = a.ABFStatKundenNr) and
  (b.PersKtoArt = 68)
WHERE a.ABFStatDatum > #01/01/2023#
group by a.ABFStatKundenNr
order by sum(a.ABFStatUmsatz) desc
Ich meine mich dunkel zu erinnern, dass man das bei MS Access ohne "as" formuliert:

"from ABFStat a"

Ich kann es aber auch gerade nicht ausprobieren, ich habe privat kein MS Office und es ist auch schon lange her, dass ich was damit gemacht hhabe.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#9

AW: Access SQL performance

  Alt 1. Apr 2023, 15:30
Ich meine mich dunkel zu erinnern, dass man das bei MS Access ohne "as" formuliert:
Das war ja mein erster Ansatz: https://www.delphipraxis.net/1520524-post5.html
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz