AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Join über 3 Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Join über 3 Tabellen

Ein Thema von Hansa · begonnen am 3. Mär 2004 · letzter Beitrag vom 6. Mär 2004
 
Robert_G
(Gast)

n/a Beiträge
 
#15

Re: Join über 3 Tabellen

  Alt 5. Mär 2004, 10:17
Dein Problem bestand darin, dass du in der 2. Abfrage auch die Artikel bekommst, die im ersten schon vorkommen.
SQL-Code:
SELECT Art.Nr
      ,Art.Bez
      ,Sp.Id
      ,Sp.Vp
FROM Art INNER JOIN Sp ON Art.Id = Sp.ID_Art
WHERE Id_Kunde = :i_ID_Kunde And Vp <> 0
UNION
SELECT Art.Nr
      ,Art.Bez
      ,ArtPG.ID
      ,ArtPG.PG
FROM Art INNER JOIN ArtPG ON Art.ID = ArtPG.ID_Art
WHERE Art.ID Not In (SELECT subSP.ID_Art
                      FROM Sp subSP
                      WHERE subSP.ID_Kunde = :i_ID_Kunde)
Zitat von Hansa:
...Ist aber auch nicht schön und auch wohl lahm. ...
Wenn du die Kunden ID als Parameter übergibst und einen Index auf ID_Art legst, dürfte das da oben ziemlich flink sein.
Beim ersten Ausführen normal schnell, danach kann der Server auf Werte aus dem Cache zurückgreifen (dank der Verwendung des Parameters) -> viel schneller (abhängig von Größe & Typ vom Arbeitsspeicher des Servers).
Der Index auf Art_ID soll im "NOT IN..."-sub select aus einem Table scan in einen Index scan machen -> nochmal schneller.
  Mit Zitat antworten Zitat
 


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 03:12 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