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