Schwere MySQL-Abfrage
Gulli
- datenbank
Hallo,
Ich habe eine Tabelle die den Lagerbestand enthält.
Artikel die ein oder ausgehen werden folgendermaßen in die DB aufgenommen:
Artikel-Nr
Menge
Lagerplatz
Richtung
(und andere, jetzt aber unwichtig)
Da es nicht für jeden Artikel nur einen Lagerplatz gibt, muss dieser bei jeder eingehenden Buchung oder auch ausgehender Buchung festgehalten werden.
Die Richtung (0 oder 1) steht für 0 = raus und 1 = rein.
Beispiel:
ArtNr Menge Platz Richtung
1 2 A4 0
2 3 A3 1
2 1 A3 0
2 3 A2 0
2 5 A3 1
2 4 A2 1
4 2 A3 1
4 2 A3 1
4 1 AQ 0
4 1 AQ 0
Ich wollte eine SQL-Abfrage gestalten, die mir als Ergebnis für jede ArtikelNr den Lagerplatz und deren Menge ausgibt.
Quasi so:
ArtNr Platz Menge
1 A4 -2
2 A3 7
2 A2 1
4 A3 4
4 AQ -2
Meine versuch:
[Artikel-NR Schleife]
$qry = "SELECT sum(menge),platz,richtung FROM artikellog WHERE artnr='$artnr' GROUP BY platz,richtung";
[/Artikel-Nr Schleife]
Aber damit habe ich mit dem print "$artnr = $sum / $platz / $richtung<br>";
nur die ausgabe
1 = 2 / A4 / 0
2 = 3 / A2 / 0
2 = 4 / A2 / 1
2 = 1 / A3 / 0
2 = 8 / A3 / 1
4 = 4 / A3 / 1
4 = 2 / AQ / 0
erzeugen können.
das ist ja schon nah dran, aber nicht genau das was ich brauche.
HIILLFE!!!
Gulli
Hallo,
Ich wollte eine SQL-Abfrage gestalten, die mir als Ergebnis für jede ArtikelNr den Lagerplatz und deren Menge ausgibt.
Meine versuch:
$qry = "SELECT sum(menge),platz,richtung FROM artikellog WHERE artnr='$artnr' GROUP BY platz,richtung";
denke einmal über ein zusätzliches group by artnr nach.
cu,
ziegenmelker
Hi,
$qry = "SELECT sum(menge),platz,richtung FROM artikellog WHERE artnr='$artnr' GROUP BY platz,richtung,artnr";
führt zu keiner veränderung.
oder wie hast du das gemeint.
Das Problem ist doch: wie bringe ich es der Datenbank bei bzw. dem SQL-Befehl Datensätze mit der
Richtung 0 der Summe abzuziehen und
Richtung 1 der Summe zu addieren?
Gulli
Hallo,
$qry = "SELECT sum(menge),platz,richtung FROM artikellog WHERE artnr='$artnr' GROUP BY platz,richtung,artnr";
führt zu keiner veränderung.
oder wie hast du das gemeint.Das Problem ist doch: wie bringe ich es der Datenbank bei bzw. dem SQL-Befehl Datensätze mit der
Richtung 0 der Summe abzuziehen und
Richtung 1 der Summe zu addieren?
ok, falsch verstanden.
select artnr as Artikelnr, sum(menge + richtung * 2 - 1) as Bestand, platz as Lagerort
from artikellog
where artnr = '$artnr'
group by artnr, platz
hth.
cu,
ziegenmelker
Hallo,
für alle Artikel sieht das so aus:
select artnr as Artikelnr, sum(menge + richtung * 2 - 1) as Bestand, platz as Lagerort
from artikellog
group by artnr, platz
Und für einen bestimmten Artikel so:
select "$artnr" as Artikelnr, sum(menge + richtung * 2 - 1) as Bestand, platz as Lagerort
from artikellog
where artnr = '$artnr'
group by platz
cu,
ziegenmelker
Hi,
nur die ausgabe
1 = 2 / A4 / 02 = 3 / A2 / 0
2 = 4 / A2 / 1
2 = 1 / A3 / 0
2 = 8 / A3 / 14 = 4 / A3 / 1
4 = 2 / AQ / 0
ich schalte mich mal zu...
Also, das sieht doch schon ganz gut aus (ich habe schon mdst. 10 Minuten auf Dein Posting geglotzt), was willst Du denn mehr?
Gruss,
Ludger
yo,
Ich wollte eine SQL-Abfrage gestalten, die mir als Ergebnis für jede ArtikelNr den Lagerplatz und deren Menge ausgibt.
SELECT artnr, platz, sum(if(richtung=1, menge, menge * -1)) AS Menge
FROM artikellog
GROUP BY artnr, platz
Ilja
Hallo,
SELECT artnr, platz, sum(if(richtung=1, menge, menge * -1)) AS Menge
FROM artikellog
GROUP BY artnr, platz
Thats it!
Genau danach hab ich gesucht!
Vielen Dank an alle die sich mit meiner Problematik befasst haben, ich würd euch am liebsten allen mal die Hand schütteln =)
Vielen Dank nochmal und tschüss.
Gulli