Helfen! Doppelte Bestelleinträge in meiner Verkaufstabelle

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Helfen! Doppelte Bestelleinträge in meiner Verkaufstabelle

    Ich arbeite an einer Datenbank für einen Online-Shop und habe Probleme mit der Verkaufstabelle. Ich vermute, dass es doppelte Bestelleinträge geben könnte. Folgendes habe ich bisher gemacht:
    Meine „Sales“-Tabelle enthält Spalten für „order_id“ (Primärschlüssel), „customer_id“, „product_id“, „quantity“ und „order_date“.
    Ich verwende ein Warenkorbsystem, das bei jeder Bestätigung einer Bestellung Daten in die Tabelle „Verkäufe“ einfügt.
    Das Problem ist, dass mir auffällt, dass einige Bestellungen mehrfach in der Tabelle auftauchen. Dies führt zu Problemen bei der Berechnung des Gesamtumsatzes und der Bestandsverwaltung.
    Kann mir jemand helfen herauszufinden, wie ich diese doppelten Einträge entfernen kann? Gibt es eine bestimmte SQL-Abfrage, mit der ich sie finden oder entfernen kann?
    Für jeden Rat wäre ich sehr dankbar!​
    Buckshot Roulette

  • #2
    Die ersten drei Treffer von google:

    https://buergel.dev/blog/post/mysql-duplikate-loeschen
    https://www.plogmann.net/how-tos/los...mysql-tabelle/
    https://www.dataqualityapps.de/know-...en-suchen.html

    Kommentar


    • #3
      Kannst du denn ausschließen, dass tatsächlich nicht zwei mal das gleiche bestellt wurde?

      Um die Datensätze zu finden und zu löschen, bei denen die anderen Merkmale außer der order_id übereinstimmen, verwendest du einen left join auf die tabelle selbst.

      dabei darauf achten, dass du in den bedingungen mit aufnimmst, dass die jeweils andere order id kleiner (oder größer, aber nicht einfach nur ungleich) sein muss, als die gejointe.

      Es werden dann alle diejenigen gelöscht, die einen partner haben (bei denen die gejointe order id nicht null ist).
      Einträge die gar keinen partner haben, werden nicht gelöscht.
      Einträge, die keinen partner mit einer order id kleiner als die eigene haben, werden auch nicht gelöscht.
      Alle anderen werden gelöscht, weil es einen partner mit noch kleinerer order id gibt. Welcher das genau ist,vkann dir egal sein.
      So behältst du immer nur denjenigen datensatz mit entweder der kleinsten (oder größten) order_id, wenn alles sonstige überein stimmt.

      Unbedingt vorher ein backup machen und bevor es an ein DELETE geht, immer erst mit SELECT austesten.
      Es kann sich ja immer irgendwo ein Fehler einschleichen.

      Kommentar

      Lädt...
      X