Hallo,
leider bin ich durch das "korrekte" Joinen von Tabellen noch nicht ganz durchgestiegen.
Das Problem fängt an, wenn ich Summen aus gejointen Tabellen ermitteln muß.
<br><br>
Anbei meine Aufgabenstellung:<br><br>
Tabelle1 = "artikel"<br>
-Spalte1 = "artikelnummer"<br>
-Spalte2 = "artikelbezeichnung"<br>
<br><br>
Tabelle2 = "bestand"<br>
-Spalte1 = "artikelnummer"<br>
-Spalte2 = "verfalldatum"<br>
-Spalte3 = "bestand"<br>
<br><br>
Tabelle3 = "auftragsposition"<br>
-Spalte1 = "auftrag"<br>
-Spalte2 = "artikelnummer"<br>
-Spalte3 = "bestellt"<br>
-Spalte4 = "bereitsgeliefert"<br>
<br><br>
Angenommen ich habe einen Artikel "4711" der mehrere Einträge in "bestand" (auf Grund verschiedener Verfalldaten) hat und natürlich mehrere Einträge in "auftragsposition" (weil dieser bereits öfter bestellt wurde)<br><br>
Ich habe versucht den nun aktuell verfügbaren Bestand mit folgender SQL-Anweisung herauszufinden:<br><br>
<b>"SELECT t1.artikelbezeichnung, SUM(t2.bestand) AS bestand, SUM(t3.bestellt-t3.bereitsgeliefert) AS nochzuliefern FROM artikel t1 <br>
LEFT JOIN bestand t2 ON t2.artikelnummer=t1.artikelnummer<br>
LEFT JOIN auftragsposition t3 ON
t3.artikelnummer=t1.artikelnummer <br>
GROUP BY t1.artikelnummer"</b><br><br>
In meinem aktuellen Fall habe ich 2 Datensätze für den Artikel in der Bestandstabelle und 2 Datensätze für diesen Artikel in auftragspositionen.
<br><br>
Im Ergebniss dieser Abfrage erhalte ich (seit ich 2 Einträge in auftragsposition habe) jeweils die doppelten Werte für "bestand" und "nochzuliefern".<br><br>
Bin ich mit dieser Abfrage völlig auf dem Holzweg?
<br><br>
Als Datenbank setze ich MySQL ein.
<br><br>
Ich bin für jeden Tipp sehr dankbar!
<br><br>
ciao
Steffen Wagner
leider bin ich durch das "korrekte" Joinen von Tabellen noch nicht ganz durchgestiegen.
Das Problem fängt an, wenn ich Summen aus gejointen Tabellen ermitteln muß.
<br><br>
Anbei meine Aufgabenstellung:<br><br>
Tabelle1 = "artikel"<br>
-Spalte1 = "artikelnummer"<br>
-Spalte2 = "artikelbezeichnung"<br>
<br><br>
Tabelle2 = "bestand"<br>
-Spalte1 = "artikelnummer"<br>
-Spalte2 = "verfalldatum"<br>
-Spalte3 = "bestand"<br>
<br><br>
Tabelle3 = "auftragsposition"<br>
-Spalte1 = "auftrag"<br>
-Spalte2 = "artikelnummer"<br>
-Spalte3 = "bestellt"<br>
-Spalte4 = "bereitsgeliefert"<br>
<br><br>
Angenommen ich habe einen Artikel "4711" der mehrere Einträge in "bestand" (auf Grund verschiedener Verfalldaten) hat und natürlich mehrere Einträge in "auftragsposition" (weil dieser bereits öfter bestellt wurde)<br><br>
Ich habe versucht den nun aktuell verfügbaren Bestand mit folgender SQL-Anweisung herauszufinden:<br><br>
<b>"SELECT t1.artikelbezeichnung, SUM(t2.bestand) AS bestand, SUM(t3.bestellt-t3.bereitsgeliefert) AS nochzuliefern FROM artikel t1 <br>
LEFT JOIN bestand t2 ON t2.artikelnummer=t1.artikelnummer<br>
LEFT JOIN auftragsposition t3 ON
t3.artikelnummer=t1.artikelnummer <br>
GROUP BY t1.artikelnummer"</b><br><br>
In meinem aktuellen Fall habe ich 2 Datensätze für den Artikel in der Bestandstabelle und 2 Datensätze für diesen Artikel in auftragspositionen.
<br><br>
Im Ergebniss dieser Abfrage erhalte ich (seit ich 2 Einträge in auftragsposition habe) jeweils die doppelten Werte für "bestand" und "nochzuliefern".<br><br>
Bin ich mit dieser Abfrage völlig auf dem Holzweg?
<br><br>
Als Datenbank setze ich MySQL ein.
<br><br>
Ich bin für jeden Tipp sehr dankbar!
<br><br>
ciao
Steffen Wagner
Comment