einen von mehreren identischen Datensätzen aus DB löschen

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

  • einen von mehreren identischen Datensätzen aus DB löschen

    Hallo liebe Community.

    Ich stelle mir gerade die Frage, wie ich folgendes am besten löse:

    Ich habe eine Tabelle, in der viele identische Datensätze sind, die nur anhand der ID (auto_increment) zu unterscheiden sind. Jetzt möchte ich einen dieser identischen Datensätze gerne löschen.

    Beispiel:
    +--id--+--user--+--item--+
    +--1--+---15---+----7----+
    +--2--+---15---+----7----+
    +--3--+---15---+----7----+
    +--4--+---15---+----7----+
    +--5--+---15---+----7----+
    +--6--+---15---+----7----+

    Einen dieser 6 Einträge möchte ich nun löschen. Mir persönlich ist es egal, welchen. Sinn und Zweck ist der, dass sich in meiner Abfrage, wieviele Items einer Art der User hat, die Summe um 1 verringert.

    Möchte gerne mal von euch wissen, wie ihr das machen würden. Nur Ideen, keinen Code. Ich danke euch schonmal.

  • #2
    Hallo!

    Mache eine Abfrage der Tabelle und lies die id aus,die schreibst in ein hidden feld und dann machst den delete mit so eine wehre clausel

    where id=".$_POST['id']."

    Verraussetzung ist natürlich du liest entsprechen dafür nach der gewünschten id aus!


    mfg der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #3
      Hallo,

      ich denke dies kann man auch in einem Query lösen.

      ein Delete mit einem dependent Subquery. Du überprüfst bei jeder Id die Anzahl der Datensätze, die identisch sind..... Und so überprüfst du ob du den Datensatz nun löschst oder nicht.

      hmm ok, das würde aber alle doppelten bis auf einen löschen......

      aber ich verstehe um ehrlich zu sein auch nicht 100%ig worauf du hinaus willst. Ist das die Anzahl der Items oder eine Art item id?

      ist es eine item-id so würde ich ein zusätzliches Feld "anzahl" machen, du gruppierst immer die einzelnen Items und kannst dann einfach die anzahl eins runtersetzen. So sparst du vor allen dingen viel viel Platz, die DB wird schneller, die Abfragen einfacher und alles ist Toll
      signed oder unsigned... das ist hier die Frage

      Kommentar


      • #4
        ja, genau, ich hätte da auch ein feld 'anzahl' drangehängt.

        ansonsten: DELETE from tabelle WHERE user = 15 AND item = 7 LIMIT 1

        Kommentar


        • #5
          Vielen Dank für eure Vorschläge.
          Die 7 steht für eine Art item_id.

          Ich kann verstehen dass ihr vielleicht etwas verwirrt seid, warum ich denn jedes item in eine separate Zeile schreibe. Ich hatte es vorher anders, nämlich mit der Menge, so hatte ich für ein item nur eine Zeile pro User.
          Aber ich verrate euch gerne, was dahinter steckt. Und zwar möchte ich die einzelnen Items nachher auf einer eigenen Seite mit den IDs auflisten lassen, und für jedes Item wird dann ein timestamp in die DB geschrieben...daher auch für jedes Item eine Zeile.

          Da erschien mir die jetzige Lösung am optimalsten, oder...

          Kommentar


          • #6
            Original geschrieben von CosmoPhobia
            Da erschien mir die jetzige Lösung am optimalsten, oder...
            Sagt doch mal, mach ich es mir mit meiner Tabelle etwa zu umständlich ?

            Kommentar


            • #7
              aber dann musst du doch auch wissen welches item mit welchem Timestamp du löschen möchtest!!!

              oder du löschst immer das item mit dem höchsten oder niedrigsten timestamp oder so... aber sonst würdest du ja ein beliebiges, zufälliges item löschen
              signed oder unsigned... das ist hier die Frage

              Kommentar


              • #8
                Genau so ist es. Ich lösche in dem Falle einfach willkürlich ein Item, es wird aber vorher gesprüft ob es ein item ist, welches einen timstamp hat. Auch der Timestamp wird in dem Falle willkürlich an irgendein item vergeben.

                Kommentar

                Lädt...
                X