Hallo an Alle,
ich habe von meinem Server aus eine relativ komplexe DB-Abfrage. Da ich hier fünf zusammenhängende Tabellen abfrage, gestaltet sich das ganze sehr zeitaufwändig.
Zur Erklärung:
Tabelle 1: Bestellkopf
Tabelle 2: Bestellposition
Tabelle 3: Positionseinteilung
Tabelle 4: Personaldaten
Tabelle 5: Einteilungszusatzdaten
Die Abfrage geht über eine ODBC-Schnittstelle auf eine DB2 Datenbank.
Mit den normalen JOINS kommt aber meistens ein leerer Result zurück, da die Tabelle 4 und 5 nicht zu jeder Einteilung Daten haben.
Momentan sieht das ganze ungefähr so aus (for-Schleifen). In Klammern steht mal die höchstzahl an Bestellungen, die auf einmal ausgelesen werden können.
Query Bestellkopf (243)
Query Bestellposition //wird 243mal druchlaufen
Query Positoinseinteilung //wird 243 mal plus zusätzliche Positonen durchlaufen
Query Personaldaten //wird so oft wie Einteilungen durchlaufen
Query Einteilungszusatzdaten. //gleich wie eins davor
In Sekunden ausgedrückt benötigt diese Abfrage 40 Sekunden. Also viel zulang. (Vermutlich ist die ODBC-Schnittstelle so langsam). Wenn ich nun mal die ersten drei Query, bei denen immer Daten vorhanden sind zu einer Query zusammenfasse, bin ich schon bei 16 Sekunden. (Besser, aber immer noch zu langsam). Nun würde ich gerne alle fünf Querys zusammenfassen.
Das geht aber nur mit LEFT JOIN. Denn wenn zu einer Einteilung in den Tabellen 4 und 5 nichts verwaltet, wird diese ignoriert.
Jetzt endlich mal die Frage.
Mit der Beschreibung auf der mySQL Seite bin ich nicht weiter gekommen. Kann mir bitte jemand ein Beispeil für eine Quer mit LEFT JOIN geben, wo zu einer Tabelle (zusätzlich zu den JOINS zwischen den einzelnen Tabellen) noch weitere Parameter, z.B. Bestelltyp, etc. abgefragt werden kann.
Viele Dank für Eure Hilfe
Viele Grüße Wolfgang