Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

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

Re: Verschiedene SQL-Abfragen zu einer verbinden?

  Alt 22. Okt 2005, 21:18
Hmmm... Eigentlich ganz einfach... Erstmal ein Tip von mir:
Anstatt SELECT * From A,B where A.X=B.Y solltest Du JOINS verwenden: SELECT * from A JOIN B on A.X=B.Y
Das ist im Prinzip das Gleiche, ist aber übersichtlicher, weil eben die Bedingungen, die Tabellen verbinden von denen getrennt werden, die das Ergebnis filtern.

So, nun stell Dir jede Tabelle als Kreis vor (Stichwort: Mengenlehre). Zwei sich überschneidende Kreise sind ja verbunden ('joined'!).

Ich gehe immer schrittweise vor, normalerweise so: Wenn ich Produkte sehen will, kommt diese Tabelle zuerst:
SQL-Code:
SELECT *
From Produkte
Dann will nicht alle Produkte, sondern nur die einer Produktgruppe. Erstmal Mengenlehre:
SQL-Code:
SELECT *
From Produkte P join Produktgruppen PG on P.pgID = PG.pgID
Ich will die Lagerorte der Produktgruppen auch noch
SQL-Code:
SELECT *
From Produkte P
     join Produktgruppen PG on P.pgID = PG.pgID
     join Lagerorte LO on LO.loID = PG.loID
usw...
Es ist die Denkweise, wie vom gewünschten Resultat die Basistabelle ('Ich will ja eigentlich Produkte sehen') extrahiert, um dann in einigen Schritten zum fertigen SELECT zu gelangen.

Noch ein Tipp zum Schluss: Verwende Views, um logisch zusammenhängende Tabellenverbindungen ('JOIN') erstmal zu gruppieren. So wäre z.B. eine View 'View_Produkt_Und_Gruppen' sicherlich einfacher...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat