Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelte Datensätze Verbieten und löschen

Einklappen

Neue Werbung 2019

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

  • Doppelte Datensätze Verbieten und löschen

    Hallo
    ich habe eine Frage ich betreibe eine Shop aus osCommerce Basis. Leider wurden in der Datenbank mehrere gleiche Attributen eingetragen, dadurch ist der osCommerce Shop ziemlich lahm geworden und man findet sich auch im admin Bereich nicht mehr zurecht dar es über 130 Seiten sind.
    • 1. kann man in der MySQL Datenbank die Erstellung 2 gleicher attributen verbieten?
    • 2. ist es möglich die bereits eingetragenen gleichen attributen automatisch zu löschen?


    ich kenne mich leider nicht so gut mit MySQL Datenbanken aus und hoffe das mir hier jemand unter die Arme greifen kann.

  • #2
    Was meinst du denn mit Attributen? Ein Attribut im Kontext relationaler Datenbanken ist eine Eigenschaft der Entitäten einer Entiätsmenge - entspricht also den Spalten in einer Tabelle bzw. den Feldern eines Datensatzes. Und hier kann jedes Attribut pro Entitätsmenge/Tabelle nur einmal vorkommen.

    Meinst du vielleicht Datensätze, die bis auf die Attribute mit Primärschlüssel identisch sind? Wenn ja, wäre die Frage, wie diese zustande kommen und demzufolge, wo man ansetzen sollte, das zu unterbinden. Macht ja keinen Sinn, eine Routine zu schreiben, die per Cronjob einmal am Tag die Dubletten rausnimmt, wenn irgendeine Funtkion permanent doppelt in die Datenbank schreibt.

    Basti

    Kommentar


    • #3
      Also ich meine mit Attributen die Farben, Größen, die unter den Produkten stehen

      Kommentar


      • #4
        also nochmal habe mich nicht richtig ausgedrückt

        Verbieten
        farbe 1
        farbe 1

        Kommentar


        • #5
          Zitat von Cyber Soldier
          also nochmal habe mich nicht richtig ausgedrückt
          ...das kann ich bestätigen. Ich zumindest verstehe immer noch nicht, was du meinst.

          Basti

          Kommentar


          • #6
            Erstmal alle doppelten einträge rausschmeißen. Ich nehme an du musst das manuell machen. (Einfacher wäre es natürlich sich nen kleinen query zu schreiben)

            Dann setzt du einen UNIQUE index über die Tabellenspalten die deinen Kriterien entsprechen (unique = einmalig)

            bsp: tabelle "produkte" => id, product_type, color_1, color_2

            Wenn ich dich richtig verstanden habe, dann willst du nicht, dass es mehrere Produkte mit der gleichen Farbkombination (oder was auch immer) gibt. Dazu setzt du den erwähnten UNIQUE index über die drei felder "product_type", "color_1" und "color_2".
            Das wars schon.
            Tabellenlayouts sind out, Browsergames sind schei$$e und die Erde ist eine Scheibe.

            Kommentar


            • #7
              Danke für eure antworten hier nochmal mein Problem.

              Also ich will nicht das in der auswahlliste, wo die Produktmerkmale (Größe, Farbe ect.) zugewiesen werden, es doppelte einträge gibt z.b die Farbe schwarz darf es nicht 2 mal geben sonder nur ein einziges mal.

              Leider würde bei der Erstellung der Produktmerkmale darauf nicht geachtet, und jetzt ist es so das es sehr viele Produktmerkmale doppelt in der auswahlliste auftauchen.

              Kommentar


              • #8
                Du könntest auch REPLACE INTO nutzen

                Kommentar


                • #9
                  was ist das genau REPLACE INTO bitte erkläre das mal kurz

                  Kommentar


                  • #10
                    Wenn du zwei Spalten als Schlüssel definierst, und du REPLACE INTO nutzt, trägt er eine neue Zeile ein, wenn keine Spalte mit gleichen Schlüsseln vorhanden ist, ansonsten aktualisiert er die jeweilige Zeile.

                    Siehe dev.mysql.com/doc

                    Kommentar


                    • #11
                      ich weiß nicht genau ob das das Richtige ist. gibt es noch eine andere lösung ?

                      Kommentar


                      • #12
                        Es gibt eben diese beiden Punkte. Einmal die Dubletten ausmerzen und zum Anderen zu verhindern, dass überhaupt welche entstehen. Wenn ich dich nun richtig verstehe, geht es dir nur darum, die Dubletten zu löschen und da bist du wahrscheinlich am schnellsten, wenn du die Datensätze einfach via phpMyAdmin rauslöschst.

                        Basti

                        Kommentar


                        • #13
                          Das ist schon richtig mit den Dubletten also löschen tue ich es dann über phpMyAdmin. Aber wie kann ich es verhindern das Dubletten entstehen. bzw wie kann ich es über MySQL Verbieten das in der Tabelle Doppelte Farben, Größen ect. eingetragen werden ?

                          Kommentar


                          • #14
                            Hi.

                            Hilft wohl nichts, als die Funktion ausfindig zu machen, die die Daten schreibt und davor dann eine Routine zu setzen, die prüft, ob die Produkt-Eigenschaften bereits definiert wurden. Ich hab hier eine osCommerce-Installation 2.2-ms2. Sieht so aus, als wäre die admin/products_attributes.php ein guter Ansatzpunkt. Dort die erste Query - bei mir Zeile 35.

                            Basti

                            Kommentar


                            • #15
                              Also danke erstmal
                              Leider bin ich noch nicht wirklich gut in PHP, habe Grade erst gelernt wie ich was ausgebe und wie ich eine variable übergebe. Ich weiß das ist jetzt ein bissen viel was ich von dir verlange aber kannst du mir dabei helfen. Was ich da genau machen muss weis ich nicht ? Ich wahre dir sehr sehr dankbar

                              Kommentar

                              Lädt...
                              X