Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage vereinfachen? (https://www.delphipraxis.net/92683-sql-abfrage-vereinfachen.html)

Angel4585 24. Mai 2007 10:35

Datenbank: MySQl • Version: 5 • Zugriff über: ZEOS

SQL Abfrage vereinfachen?
 
Hallo,

ich habe 4 Tabellen:

Positionen
Auftraege
Kunden
Kundengruppe

Jetzt möchte ich alle Positionen von allen Aufträgen von allen Kunden in einer bestimmten Kundengruppe ausgeben und habe folgende Abfrage dafür:

SQL-Code:
... where positionen.auftragsid in (auftraege.kundenid in(kunden.kundengruppenid = "kundengruppenid"))
Also das das so nicht geht weis ich, nur war ich jetz zu faul das komplette ding hinzuschreiben.

Aber wie kann ich die vereinfachen? Diese Abfrage dauert bei wenigen DS(etwa 5000 Positionen, 3000 Kunden, 2500 Aufträge und 5 Kundengruppen) schon einige Sekunden, was deutlich zu lange ist.

Hat jemand ne Idee?

Danke schonmal

:angel:

mkinzler 24. Mai 2007 10:38

Re: SQL Abfrage vereinfachen?
 
Ersetze die subselects mal durch joins.

Angel4585 24. Mai 2007 10:50

Re: SQL Abfrage vereinfachen?
 
joins in der where klausel? wie soll das dann aussehen?

mkinzler 24. Mai 2007 10:53

Re: SQL Abfrage vereinfachen?
 
Nein die ganze Abfrage in einene Join verwandeln.

DeddyH 24. Mai 2007 11:04

Re: SQL Abfrage vereinfachen?
 
Hallo,

das könnte etwa so aussehen
SQL-Code:
SELECT * FROM Kundengruppe A
JOIN Kunden B ON B.Gruppe = A.ID
JOIN Auftraege C ON C.KundenID = B.ID
JOIN Positionen D ON D.AutragsID = C.ID
WHERE A.Kundengruppenbezeichnung = 'Wasweißich'
(ungetestet).

Hth

Deddy

alzaimar 24. Mai 2007 11:29

Re: SQL Abfrage vereinfachen?
 
Und dann noch einen Index auf die 'ID'-Spalten

DeddyH 24. Mai 2007 11:56

Re: SQL Abfrage vereinfachen?
 
Richtig, aber ich war sowieso davon ausgegangen, dass es sich um "echte" Primär- und Fremdschlüssel handelt.

Angel4585 24. Mai 2007 12:16

Re: SQL Abfrage vereinfachen?
 
Danke euch!! Funktioniert :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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