golum: MYSQL Datenbank

Hallo,

ich habe eine Datenbank. In der Datenbank sind mehrere Spalten. Einer der Spalten (Feld1) hat als Type "int" und als Extra "auto_increment".

Sagen wir mal, ich habe in der Datenbank 10 Datensätze. Wenn ich den 10. Datensatz lösche und einen neuen Datensatz einfüge, kommt in der Spalte Feld1 nicht 10 sondern 11.

Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind. Auch wenn in der Mitte vom 1. - 10. Datensätze gelöscht werden und neue einfügt werden.

Grüße aus Berlin
golum

  1. Hi golum!

    Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.

    Nein.

    Merke dir diese Grundsatzregel: Der ID-Spalte wird keine Semantik zugewiesen. Sie dient einzig und allein der Identifikation einzelner Datensätze.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.
      Nein.

      Klar kann man, wenn man will:

      ALTER TABLE tabelle1 AUTO_INCREMENT=nächst_höhere_zahl_als_datensätze

      greetz

      1. Hi Cross!

        Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.
        Nein.
        Klar kann man, wenn man will:

        Dann ließ mein "Nein" eben als "Nein, dass will man nicht!".

        Du willst mir doch nicht ernsthaft erklären, dass das unter den gegebenen Umständen in irgendeiner Weise sinnvoll wäre!

        Ich sage also: Nein!

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Hi Cross!

          Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.
          Nein.
          Klar kann man, wenn man will:
          Dann ließ mein "Nein" eben als "Nein, dass will man nicht!".

          Du willst mir doch nicht ernsthaft erklären, dass das unter den gegebenen Umständen in irgendeiner Weise sinnvoll wäre!

          Ich sage also: Nein!

          Hi Hospel,

          IMHO bezog sich Dein "Nein" auf die Frage: "Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.".

          Daraufhin meinte ich, dass es sehr wohl möglich ist, wenn man WILL. Ob das in irgendeiner Art und Weise sinnvoll ist, war in diesem Zusammenhang nicht das Thema.

          BTW: Ich halte das übrigens auch für Blödsinn, insofern sind wir am Ende doch konform. ;)

          Gruß
          cross

  2. Hi!

    Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind. Auch wenn in der Mitte vom 1. - 10. Datensätze gelöscht werden und neue einfügt werden.

    Welches Problem?

    Eine ID hat nur die Aufgabe einen Datensatz zu identifizieren.

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  3. Yerf!

    Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind.

    Das ist kein Problem sondern Absicht. Die ID sollte *ausschließlich* zur Identifizierung eines Datensatzes verwendet werden und dazu sollte sie vor allem eines sein: eindeutig. Eine Wiederverwendung von IDs könnte Probleme nach sich ziehen, wenn noch Datensätze vorhanden sind, die eine bereits gelöschte ID referenzieren.

    Wenn du eine fortlaufende Nummerierung willst musst du sie selbst erzeugen, entweder als zusätzliche Spalte in der Tabelle oder dynamisch wärend der Abfrage.

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Hallo,

      oder dynamisch wärend der Abfrage.

      mir wäre dieser Vorschlag sehr hilfreich. Wie sähe sowas aus, bzw. nach was soll ich googlen ... :-)

      golum

      1. Hallo golum!

        oder dynamisch wärend der Abfrage.

        mir wäre dieser Vorschlag sehr hilfreich. Wie sähe sowas aus, bzw. nach was soll ich googlen ... :-)

        Um was geht es dir denn? Nur darum die abgefragten Werte durchnummeriert zu haben? Dann nimm doch einfach ein nummerisches Array.

        Grüße, Matze

        1. Yerf!

          Um was geht es dir denn? Nur darum die abgefragten Werte durchnummeriert zu haben? Dann nimm doch einfach ein nummerisches Array.

          Stimmt, für eine einfache Nummerierung sollte das auch schon reichen. Man sollte noch dazusagen, das es besser ist eine Sortierung mit in die Abfrage aufzunehmen, damit man verlässlich immer das gleiche Ergebnis bekommt.

          Gruß,

          Harlequin

          --
          <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
          1. yo,

            ich würde den rat der anderen befolgen und keine fortlaufenden zahlen in die ID spalte mit reinbringen. alles andere führt nur zu problemen und gewonnen hat man dadurch gar nichts.

            Ilja

            1. Hallo,

              vielen Dank für die Informationen, ich glaube ich werden es mit der Nummerierung, also sowas wie i = i+1.

              Vielen Dank.
              golum

              1. Hallo golum!

                vielen Dank für die Informationen, ich glaube ich werden es mit der Nummerierung, also sowas wie i = i+1.

                Du benutzt doch vermutlich eine mysql_fetch-Funktion um die Daten aus der Datenbank in ein Array zu speichern. Wenn nicht, ist es sicher eine ähnliche Funktion.

                Benutzt du jetzt mysql_fetch_row() ergibt sich doch automatisch ein Array mit fortlaufend nummerierten Elementen. Wo ist noch das Problem?

                Grüße, Matze

      2. Yerf!

        mir wäre dieser Vorschlag sehr hilfreich. Wie sähe sowas aus, bzw. nach was soll ich googlen ... :-)

        Man kann in Abfragen nicht nur Felder aus Tabellen holen sondern auch Werte berechnen lassen. Damit sollte es möglich sein einen Zähler mitzuselektieren der sich pro Datensatz um 1 erhöht. (Eine genaue Lösung hab ich jetzt nicht parat)

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. echo $begrüßung;

          Man kann in Abfragen nicht nur Felder aus Tabellen holen sondern auch Werte berechnen lassen. Damit sollte es möglich sein einen Zähler mitzuselektieren der sich pro Datensatz um 1 erhöht. (Eine genaue Lösung hab ich jetzt nicht parat)

          Für MySQL beispielsweise mit einer Variablen:

          SET @x = 0
          SELECT @x := @x + 1, ... FROM tabelle

          Über PHP abzusetzen mit zwei mysql_query()-Aufrufen innerhalb der selben Verbindung. Beim Zählen ab 0 ist @x mit -1 zu initialisieren.

          echo "$verabschiedung $name";

  4. Hallo!

    Sagen wir mal, ich habe in der Datenbank 10 Datensätze. Wenn ich den 10. Datensatz lösche und einen neuen Datensatz einfüge, kommt in der Spalte Feld1 nicht 10 sondern 11.

    Genau so ist es vorgesehen.

    Kann man dieses Problem irgendwie dauerhaft beheben, sodass die Nummern fortlaufend sind. Auch wenn in der Mitte vom 1. - 10. Datensätze gelöscht werden und neue einfügt werden.

    Das was du als Problem bezeichnest ist eigentlich so erwünscht.
    Ich wüsste keinen (einfachen) Weg wie man das hinbekommt was du willst.

    Das Thema hat übrigens nichts mit PHP zu tun, deshalb ändere ich mal.

    Grüße, Matze