AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Benötige Hilfe bei komplexer SQL Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Benötige Hilfe bei komplexer SQL Abfrage

Ein Thema von sunfy · begonnen am 10. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
jensw_2000
(Gast)

n/a Beiträge
 
#1

Re: Benötige Hilfe bei komplexer SQL Abfrage

  Alt 10. Aug 2005, 01:16
Zitat:
Ist es da sinnvoller die Anfrage in Access zu schreiben und die Abfrage zu importieren, oder die Abfrage in eine Delphi Query zu schreiben?
Das spielt bei Access imho keine Rolle, weil bei Access ohnehin immer dein PC die komplette Arbeit übernimmt. Es gibt ja keinen SQL-Server auf den du den Job abwälzen kannst.

Zitat:
Und alle Tabellen mit allen Daten erstmal zu Joinen dauert zu lange.
Du wirst nicht daran vorbeikommen die Tabellen mit Joins zu verknüpfen.
Wenn du die Joins so gestaltest, das nur geringe Datenmengen zurückgegeben werden, sollte es nicht weig dauern

Beispiel:
Falls bei der SQL Syntax irgend etwas nicht 100% passt bitte ich um Entschuldigung. Meine Access Zeiten sind schön länger vorbei ...

SQL-Code:
SELECT P.Pers_Vorname+' '+P.Pers_Name AS [Person]
            ,Max(K1.Kath1_Datum) AS [Kath1]
            ,Max(K2.Kath2_Datum) AS [Kath2]
            ,Max(K3.Kath3_Datum) AS [Kath3]
            ,Max(K4.Kath4_Datum) AS [Kath4]

FROM Person P

-- erst die Bezugstabellen mit PERSON Inner Joinen ..
INNER JOIN
  Pers_b_Kath1 PBK1
  ON PBK1.Pers_ID = P.Pers_ID

INNER JOIN
  Pers_b_Kath2 PBK2
  ON PBK2.Pers_ID = P.Pers_ID

INNER JOIN
  Pers_b_Kath3 PBK3
  ON PBK3.Pers_ID = P.Pers_ID

INNER JOIN
  Pers_b_Kath4 PBK4
  ON PBK4.Pers_ID = P.Pers_ID

-- Dann die Kathegorie-Tabellen mit den Bezugstabellen Outer Joinen damit
-- auch leere Kathegorie-Datensätze auftauchen..
LEFT OUTER JOIN
  Kathegorie1 K1
  ON K1.Kath1_ID = PBK1.Kath1_ID

LEFT OUTER JOIN
  Kathegorie2 K2
  ON K2.Kath2_ID = PBK2.Kath2_ID

LEFT OUTER JOIN
  Kathegorie3 K3
  ON K3.Kath3_ID = PBK3.Kath3_ID

LEFT OUTER JOIN
  Kathegorie4 K4
  ON K4.Kath4_ID = PBK4.Kath4_ID

-- Wenn möglich (unbedingt) mit der WHERE Klausel einen Filter auf die Tabelle Peron setzen
-- um die Result-Datenmenge möglichst klein zu halten
WHERE K.Name='MüllerOR K.Name='Meier'

-- alle "nicht in Aggregatfunktionen eingebundenen Felder" mit GROUP BY gruppieren
GROUP BY P.Pers_Vorname+' '+P.Pers_Name -- ergänzt und korrigiert...

Ich hoffe das ist was Passenndes für dich.
Um die Perfornamce etwas zu steigern, solltest du auf jeden Fall die Felder "Pers_ID" und "KathX_ID" in allen relevanten Tabellen indizieren.


Schöne Grüße,
Jens

  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 07:11 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 by Thomas Breitkreuz