AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage vereinfachen?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage vereinfachen?

Ein Thema von Angel4585 · begonnen am 24. Mai 2007 · letzter Beitrag vom 24. Mai 2007
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 10:35
Datenbank: MySQl • Version: 5 • Zugriff über: ZEOS
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:

... 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

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 10:38
Ersetze die subselects mal durch joins.
Markus Kinzler
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 10:50
joins in der where klausel? wie soll das dann aussehen?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 10:53
Nein die ganze Abfrage in einene Join verwandeln.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 11:04
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
Detlef
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 11:29
Und dann noch einen Index auf die 'ID'-Spalten
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 11:56
Richtig, aber ich war sowieso davon ausgegangen, dass es sich um "echte" Primär- und Fremdschlüssel handelt.
Detlef
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: SQL Abfrage vereinfachen?

  Alt 24. Mai 2007, 12:16
Danke euch!! Funktioniert
Martin Weber
Ich bin ein Rüsselmops
  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 05:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz