MYSQL Datenbank
golum
- php
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
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
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
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
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
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
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
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
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
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
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
Hallo,
vielen Dank für die Informationen, ich glaube ich werden es mit der Nummerierung, also sowas wie i = i+1.
Vielen Dank.
golum
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
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
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";
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