Frage

Ich bin mit MySQL und PHP. Ich habe eine Tabelle, die die Spalten-ID und Menge enthält. Ich möchte die ID der Zeile abzurufen, die die letzte ist Menge zu summieren, da sie die Zahl 40 in Summe erreicht. Um genauer zu sein. Ich habe 3 Zeilen in der Datenbank. Ein mit der Menge 10, ein mit Menge 30 und ein mit der Menge 20 Also, wenn ich die Mengen Summe das Ergebnis 40 haben, würde ich die ersten beiden Hexen zusammenzuzufassen bedeuten: 10 + 30 = 40. Auf diese Weise die letzte Kennung, verwendet wird, um die Zahl 40 ist 2. ich möchte nur wissen, die ID der letzten Zeile zu summieren, die verwendet wird, um die Summe von 40 zu vervollständigen.

ich möchte weitere Informationen geben, wenn gefragt. DANKE !!


Lassen Sie es mich so sagen: Ich habe wirklich 6 Produkte in meiner Hand. Die erste kam zu meinem Besitz an dem Tag von 10, die nächsten 3 kamen am Tag der 11 und die letzten 2 kam am 12.

Jetzt will ich 3 Produkte von meinem Lager verkaufen. Und wollen sie in der Reihenfolge verkaufen, dass sie gekommen sind. So für den Kunden, die 3 Produkte will ich ihm das Produkt, das auf 10 und 2 Produkte von denen würde verkaufen kam, die am 11. kam

Für die nächsten Kunden, die 2 Produkte will, würde ich ihm ein Produkt ab dem Datum des 11 verkaufen, die aus der letzten Bestellung von 3 insgesamt bleibt, und ein anderer von denen, auf 12.

Die Frage ist, wie würde ich wissen, welcher Preis jedes Produkt hatte ich verkauft? Ich dachte, wenn ich herausfinden kann jede angeforderte Menge, welche Zeilen fasst, würde ich wissen, wo die Summe, die ich jedes Mal gestartet werden soll, einen Auftrag liefern. Also zuerst möchte ich sehen, welche Zeilen fasst 3 Produkte und halten Sie den Eintrag ID. Für den nächsten Auftrag würde ich die Grafen von dieser ID beginnen und summieren, bis er die zweiten Ordnung von 2 Produkten und so weiter fasst. Ich dachte, dass diese Art und Weise, ich den Überblick über die eingehenden Preise halten kann, die jedes Produkt hatte. Also werde ich nicht verkaufen die Produkte ab dem Tag von 12 zu einem Preis aus, die ersten Preise mit.

Ich hoffe, Sie verstehen. Ich muss nur wissen, welchen Preis irgendwelchen meiner Produkte hatte damit ich weiß, wäre, dass die ersten Produkte einen Preis haben würde, aber als die Produktpreise erhöht, muss ich meine Preise erhöhen ... Also die letzten Produkte, die für die verkauft werden müssen kam ein höherer Preis. Ich kann nur erreicht werden, dass, wenn ich den Überblick über diese ...

Vielen Dank.


Nobody? Oder noch einfacher: MySQL sollte die benötigten Zeilen für SUM (quantity) wählt, dass sie höher oder gleich mit 40 zum Beispiel. Und dann mir die ID der letzten Reihe zu bekommen, das in der Summe Prozess beteiligt.

War es hilfreich?

Lösung

Ich verstehe Ihre Frage nicht allzu gut. Können Sie versuchen, es richtig neu zu fassen? Von dem, was ich zu interpretieren, hier ist die Struktur der Datenbank:

ProductID    ArrivalDate
   1          10
   2          11
   3          11
   4          11
   5          12
   6          12

Jetzt fragen Sie: „Wie soll ich das wissen die Preis jedes Produkt hatte ich verkauft“? Welche sorta verwirrt mich, da jeder Wert in der Datenbank kein Preis Attribut hat. Sollte nicht Ihre Datenbank wie folgt aussehen:

ProductID    ArrivalDate    Price
   1          10              100
   2          11              200
   3          11              300
   4          11              300
   5          12              400
   6          12              400

Ich persönlich denke, Ihre Idee Preis, um herauszufinden, verkauft fehlerhaft ist. Es würde mehr Sinn machen, ein paar mehr Felder zu Ihrer Datenbank hinzuzufügen:

ProductID    ArrivalDate    Price     InStock   DateSold
   1          10              100       Yes        17
   2          11              200       Yes        17
   3          11              300       Yes        18
   4          11              300       Yes        18
   5          12              400       no        
   6          12              400       no        

Ihre Datenbank ändern, können Sie leicht zu verfolgen, wenn ein Produkt ankommt, das bisher verkauft, seinen Preis, vielleicht Menge (ich kann, wenn sie nicht sagen, ein aktuelles Feld oder nicht).

Darüber hinaus können Sie vereinfachen und Ihr Leben leichter machen, indem sie die SQL-Abfragen zu trennen, oder sogar etwas Code hinzufügen für Sie einen Teil der Arbeit zu tun.

Andere Tipps

Haben Sie eine dritte Spalte mit einer laufenden Summe. Dann können Sie einfach die letzte Zeile zurück, wo die laufende Summe <= Zielwert.

So Tisch aussehen sollte:

ID    Quantity    RunningTotal
1           10              10
2           30              40
3           20              60

Hinweis: Wenn Sie eine Zeile in der Tabelle löschen, erinnern alle nachfolgenden Zeilen RunningTotal -= DeletedRow.Quantity zu aktualisieren

Unter Berufung auf Tabelle IDs ist wahrscheinlich eine schlechte Idee für diese, aber wenn es das ist, wie es wirklich getan, könnte man so etwas wie diese (nicht getestet) versuchen:

SELECT yourTableA.id
  FROM yourTable AS yourTableA
  JOIN yourTable AS yourTableB
 WHERE ( yourTableA.value + yourTableB.value ) = 40
   AND yourTableA.id != yourTableB.id
 ORDER BY yourTableA.id

Diese Art der Lösung funktioniert nur, wenn Ihr erwartet, dass Sie nur zwei Zeilen müssen auch immer Ihr Ziel Summe gleichen. Da es sich höchstwahrscheinlich nicht der Fall ist, ist Ihre beste Wette wahrscheinlich ist, zu versuchen und alle Zeilen und tun dies programaticly auf die zurückgegebenen Daten.

Die laufende Gesamtlösung von LC Gestellt ist auch eine gute Option, obwohl ich in der Regel versuchen, berechnete Daten zu vermeiden, speichern, wenn ich nicht unbedingt habe.


Auf der Grundlage der aktualisierten Informationen aus dieser Anfrage, ich habe eine andere Antwort.

Es klingt nicht so viel, wie Sie über das Inventar kümmern. Sie kümmern sich mehr um, wenn die Produkte kamen.

SELECT *
  FROM product
 ORDER BY product.receivedData

Prozess jeden Datensatz, wie sie hereinkommen, für den Datensatz, den Preis zu speichern, und so lange weitermachen, wie Sie benötigen, bis Sie die Anzahl der Artikel, die Sie benötigen erreichen. Sie sollten mit einer Liste von Elementen, die Anzahl der Bestandsaufnahme auf dieser Ebene und den Preis auf diesem Niveau enden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top