# Verständnisfrage zu Order-Tabelle

**URL:** <https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229>\
**Category:** Programmierung\
**Created:** [14. September 2022 um 15:49 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229 "2022-09-14T15:49:54Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![AndreasBielmeier](https://avatars.discourse-cdn.com/v4/letter/a/a8b319/32.png) [@AndreasBielmeier](https://forum.shopware.com/u/AndreasBielmeier)\
**Post date:** [14. September 2022 um 15:49 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/1 "2022-09-14T15:49:54Z")

</div>

Ich habe eine Verständnisfrage zur Order-Tabelle:  
Warum stehen dort manche Bestellungen mehrmals mit nahezu identischem Daten? Wie ist das zu verstehen. Der einzige Unterschied ist im Feld „version\_id“ zu erkennen.  
Vielen Dank.

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [14. September 2022 um 16:15 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/2 "2022-09-14T16:15:41Z")

</div>

Wenn Änderungen an der Order vorgenommen werden, z. B. Statusänderung, wird eine neuer Eintrag mit einer anderen VersionsID erstellt.

Korrigiert mich, wenn ich falsch liege.

---

<div class="post-metadata">

**Author:** ![w.buchert](https://avatars.discourse-cdn.com/v4/letter/w/e47774/32.png) [@w.buchert](https://forum.shopware.com/u/w.buchert)\
**Post date:** [15. September 2022 um 06:36 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/3 "2022-09-15T06:36:36Z")

</div>

Bei reinen Statusänderungen wird kein neuer Eintrag gemacht, aber wenn du z.B. ein Dokument erstellst für die Bestellung.

---

<div class="post-metadata">

**Author:** ![AndreasBielmeier](https://avatars.discourse-cdn.com/v4/letter/a/a8b319/32.png) [@AndreasBielmeier](https://forum.shopware.com/u/AndreasBielmeier)\
**Post date:** [15. September 2022 um 06:48 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/4 "2022-09-15T06:48:53Z")

</div>

OK, und aus welchen Gründen genau bei Dokumenten?

---

<div class="post-metadata">

**Author:** ![w.buchert](https://avatars.discourse-cdn.com/v4/letter/w/e47774/32.png) [@w.buchert](https://forum.shopware.com/u/w.buchert)\
**Post date:** [15. September 2022 um 06:52 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/5 "2022-09-15T06:52:11Z")

</div>

Den Grund findest Du in der document-Tabelle, dort ist das Dokument mit der Version der Order verknüpft zum Zeitpunkt der Dokument Erstellung.  
Evtl. aus Gründen der Nachvollziehbarkeit oder rechtlichen Gründen, da kenne ich mich nicht aus, sorry.

---

<div class="post-metadata">

**Author:** ![AndreasBielmeier](https://avatars.discourse-cdn.com/v4/letter/a/a8b319/32.png) [@AndreasBielmeier](https://forum.shopware.com/u/AndreasBielmeier)\
**Post date:** [15. September 2022 um 07:12 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/6 "2022-09-15T07:12:40Z")

</div>

Ah ok, ist ein Argument und nachvollziehbar. Vielen Dank für die Informationen.

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [28. September 2022 um 15:19 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/7 "2022-09-28T15:19:18Z")

</div>

Tatsächlich ist die Order Tabelle wohl die einzige, die die Versionierung nutzt. Wirklich relevant ist aber erst wenn man Änderungen an der Order macht; z.B. wenn der Order im Backend ein neuer Artikel hinzugefügt wird oder ein Artikel wird entfernt weil dieser vielleicht nicht mehr lieferbar ist. Hier wird dann tatsächlich eine Version erstellt (inkl. der LineItems). Nach dem finalen Speichern wird die temporäre Version zur aktuellen.  
Wenn man nun einen Lieferschein erzeugt, muss sich dieser ja auf die aktuellen Produkte beziehen. Sprich dann ist natürlich sinnvoll wenn die „alten“ Versionen erhalten bleiben.

herzlichst

CH

---

<div class="post-metadata">

**Author:** ![MSH](https://avatars.discourse-cdn.com/v4/letter/m/e19b73/32.png) [@MSH](https://forum.shopware.com/u/MSH)\
**Post date:** [21. Januar 2023 um 09:43 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/8 "2023-01-21T09:43:44Z")

</div>

Wird ein Artikel in einer bestehenden Bestellung hinzugefügt, dann gibt es einen neuen Eintrag in der Tabelle „order“.  
Es sind dann mehrere Eintrag in Tabelle „order“ mit der gleichen „order\_number“.

Der Eintrag mit der höchsten Zahl in der Spalte „auto\_increment“ ist die aktuelle Bestellung?

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [21. Januar 2023 um 11:11 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/9 "2023-01-21T11:11:19Z")

</div>

Ich „vermute“ mal, dass das dann so ist. Technisch richtig ist das Verfahren aber deutlich komplexer. Die Order-Tabelle ist aktuell die einzige Tabelle, die die Versionierung wirklich nutzt.  
Wenn man im Backend eine bestehende Order bearbeitet, dann wird diese zunächst versioniert. Danach kann die Order bearbeitet werden (also CRUD). Und beim Speichern, die neue Version zurück in die bestehende Order gemergt.  
Und doch die UUID verliert man spätestens dann komplett den Überblick ☹

LG

* * *

Bei Fragen einfach fragen

---

<div class="post-metadata">

**Author:** ![MSH](https://avatars.discourse-cdn.com/v4/letter/m/e19b73/32.png) [@MSH](https://forum.shopware.com/u/MSH)\
**Post date:** [21. Januar 2023 um 12:36 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/10 "2023-01-21T12:36:17Z")

</div>

Ich möchte Bestellungen per MySQL exportieren. Solange die Bestellung im Ursprungszustand ist, funktioniert alles soweit gut, aber bald eine Bestellung im Backend geändert wird, hauts mit dem Export nicht mehr hin.

Grob schaut die Abfrage wie folgt aus:

_$sql = "SELECT \* FROM `order`_  
_…_  
_…_  
_WHERE `order_number` = $order\_nummer and `billing_address_id` = `order_address`.`id` ORDER BY `position`";_

Wurde eine Bestellung im Backend geändert, dann gibt es in der Tabelle „order“ weitere Einträge mit der gleichen Bestellnummer, welche in der Spalte „auto\_increment“ hochgezählt wird.

Wenn ich jetzt probeweise wie folgt abfrage: WHERE `auto_increment` = 153

**Fatal error** : Uncaught mysqli\_sql\_exception: Column ‚auto\_increment‘ in where clause is ambiguous in

Wie kann ich folgende Bedingung abfragen:

order\_nummer = „123“ and auto\_increment "entsprechend der höchste Wert, welcher in der Spalte auto\_increment hinterlegt ist?

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [21. Januar 2023 um 14:17 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/11 "2023-01-21T14:17:54Z")

</div>

der Primary Key ist id zusammen mit version\_id. Und dahin sind auch andere Daten (z.B. die Items) verlinkt. Bei der auto\_increment spalte müsste das eigentlich umgekehrt sein. Jede Änderung bekommt zwar einen höheren Wert aber am Ende lande die „gemergte“ Order wieder auf der kleinsten id. Schau in die Spalte „updated\_at“.

```auto
select *  
from `order` o 
where order_number = "4711"
and auto_increment = (select max(auto_increment) from `order` where order_number = "4711")

```

---

<div class="post-metadata">

**Author:** ![MSH](https://avatars.discourse-cdn.com/v4/letter/m/e19b73/32.png) [@MSH](https://forum.shopware.com/u/MSH)\
**Post date:** [21. Januar 2023 um 16:47 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/12 "2023-01-21T16:47:47Z")

</div>

Danke für deine Hilfe, im phpMyAdmin habe ich die korrekt Ausgabe erhalten, aber in mein Script eingebaut funktioniert es nicht.

$sql = "  
SELECT \* FROM `order`  
WHERE `order_number` = $order\_number  
**and `auto_increment` = (select max(`auto_increment`) from `order` where `order_number` = $order\_number)**  
and `billing_address_id` = `order_address`.`id` ORDER BY `position`  
";

---

<div class="post-metadata">

**Author:** ![grelf111](https://avatars.discourse-cdn.com/v4/letter/g/91b2a8/32.png) [@grelf111](https://forum.shopware.com/u/grelf111)\
**Post date:** [23. Januar 2023 um 09:58 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/13 "2023-01-23T09:58:05Z")

</div>

Ich war auch schon über die version-ID gestolpert.  
[created\_at als Filter sollte helfen](https://forum.shopware.com/t/versionid-fuer-entities/97675/4)

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [24. Januar 2023 um 07:33 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/14 "2023-01-24T07:33:25Z")

</div>

```auto
$sql = "
SELECT * FROM order
WHERE order_number = '$order_number'
and auto_increment = (select max(auto_increment) from order where order_number = '$order_number')
...

```

da order\_number ein string ist, gehören dann auch quotes drum

---

<div class="post-metadata">

**Author:** ![MSH](https://avatars.discourse-cdn.com/v4/letter/m/e19b73/32.png) [@MSH](https://forum.shopware.com/u/MSH)\
**Post date:** [24. Januar 2023 um 19:45 UTC](https://forum.shopware.com/t/verstaendnisfrage-zu-order-tabelle/96229/15 "2023-01-24T19:45:47Z")

</div>

Wie fragt denn Shopware die Daten einer Bestellung im Backend ab? Wo finde ich die entsprechenden Befehle?
