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


      • #4
        Welche grundlegenden Technologien und Fähigkeiten benötigt ein erfahrener Front-End-Webentwickler mit Schwerpunkt auf WordPress, HTML, CSS und JavaScript?

        Kommentar


        • #5
          Identifizieren Sie doppelte Einträge:
          • Manuelle Überprüfung: Durchsuchen Sie die Tabelle "Sales" nach doppelten Einträgen (zeitaufwändig & unzuverlässig)
          • SQL-Abfrage:
          SQL
          SELECT order_id, COUNT(*) AS count
          FROM sales
          GROUP BY order_id
          HAVING count > 1;
            • Diese Abfrage zeigt Bestell-IDs mit mehreren Einträgen an.
          So entfernen Sie doppelte Einträge:
          Entfernen Sie doppelte Einträge:
            • Manuelles Löschen: Löschen Sie doppelte Einträge manuell (fehleranfällig)
            • SQL-Abfrage:
          SQL
          DELETE FROM sales
          WHERE order_id IN (
          SELECT order_id
          FROM sales
          GROUP BY order_id
          HAVING count > 1
          );

          Kommentar

          Lädt...
          X