piepmax - 38
Profi
(offline)
Dabei seit 04.2006
794
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:47 Uhr
|
|
Hallo,
ich habe ein kleines Problem.
Und zwar möchte ich per Insert Befehl einen neuen Eintrag in eine MySQL Tabelle einfügen.
Soweit kein Problem.
MySQL hängt den Eintrag aber immer an das Ende der Tabelle.
Ich möchte den Eintrag vor den ersten Eintrag setzen, also an den Anfang der Tabelle.
Wär toll wenn mir jemand helfen könnte.
Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.
|
|
tbird_ulm - 44
Profi
(offline)
Dabei seit 08.2007
651
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:49 Uhr
|
|
warum?
du sortierst / selektierst doch eh anschliessend deine daten ...
Wissen ist Macht. Nix wissen macht aber auch nix ...
|
|
DinoRS1337 - 29
Profi
(offline)
Dabei seit 09.2010
831
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:53 Uhr
|
|
genau, du hast ja mit Sicherheit eine eindeutige ID oder timestamp mit dem du bei der abfrage die Reihenfolge deines Resultset beeinflussen kannst.
|
|
piepmax - 38
Profi
(offline)
Dabei seit 04.2006
794
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:53 Uhr
|
|
Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.
Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.
|
|
Klischeepunk - 41
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:53 Uhr
|
|
Zitat von piepmax: Hallo,
ich habe ein kleines Problem.
Und zwar möchte ich per Insert Befehl einen neuen Eintrag in eine MySQL Tabelle einfügen.
Soweit kein Problem.
MySQL hängt den Eintrag aber immer an das Ende der Tabelle.
Ich möchte den Eintrag vor den ersten Eintrag setzen, also an den Anfang der Tabelle.
Wär toll wenn mir jemand helfen könnte.
WTF... o.o
Nicht sinn und zweck der datenbank und unmöglich.
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
tbird_ulm - 44
Profi
(offline)
Dabei seit 08.2007
651
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:54 Uhr
|
|
Zitat von piepmax: Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.
gib, wie gesagt, einen timestamp oder eine eindeutige ID mit und sortiere nach dieser.
Wissen ist Macht. Nix wissen macht aber auch nix ...
|
|
h3mpti - 38
Profi
(offline)
Dabei seit 05.2007
878
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:55 Uhr
|
|
Abgesehen davon, dass es denke ich keinen vernünftigen Anwendungsfall für die Problemstellung gibt :
Hat dein Primary Key die Eigenschaft AUTO_INCREMENT?
Falls nein:
vor dem Insert alle Ids in der Tabelle um eins Hochzählen (Es muss aber mit der höchsten ID begonnen werden, da sonst MySQL rummeckert wegen der unique verletzung).
Danach ein Insert mit der Id 1.
Allerdings, wie oben schon erwähnt, ist eine Sortierung im SELECT-Statement sinnvoller ..
|
|
bredator - 41
Champion
(offline)
Dabei seit 03.2008
5319
Beiträge
|
Geschrieben am: 12.01.2011 um 13:55 Uhr
Zuletzt editiert am: 12.01.2011 um 13:56 Uhr
|
|
Zitat von piepmax: Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.
ORDER BY...
Empfehlenswert ist zusätzlich ein Buch, um das Prinzip und die Funktionsweise einer Datenbank und deren Abfragemöglichkeiten zu verstehen.
Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.
|
|
DinoRS1337 - 29
Profi
(offline)
Dabei seit 09.2010
831
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:57 Uhr
|
|
ASC (jedenfalls in MSSQL )
|
|
Page666 - 46
Profi
(offline)
Dabei seit 07.2005
612
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:58 Uhr
|
|
Wie wär's mit "select last_insert_id..."?
https://www.youtube.com/user/wormcluster
|
|
bredator - 41
Champion
(offline)
Dabei seit 03.2008
5319
Beiträge
|
|
Geschrieben am: 12.01.2011 um 13:58 Uhr
|
|
In dem Fall aber DESC, wenn die neueste, nach ID sortiert, oben stehen soll.
Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.
|
|
piepmax - 38
Profi
(offline)
Dabei seit 04.2006
794
Beiträge
|
|
Geschrieben am: 12.01.2011 um 14:00 Uhr
|
|
Ok, Danke 
Ich werde die Einträge jetzt einfach von dem Frontend-Programm andersrum auflisten lassen.
Hat sich somit erledigt und kann geschlossen werden.
Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.
|
|
DinoRS1337 - 29
Profi
(offline)
Dabei seit 09.2010
831
Beiträge
|
|
Geschrieben am: 12.01.2011 um 14:02 Uhr
|
|
damn du hast Recht, ist mir auch gerade aufgefallen dass ich das verdreht hab
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
Geschrieben am: 12.01.2011 um 17:22 Uhr
Zuletzt editiert am: 12.01.2011 um 17:23 Uhr
|
|
Dem ganzen liegt schon der Fehlschluss zugrunde das die Datenbank als Tabelle gespeichert wird und nur hinten etwas angehängt wird.
Speicherung in einer Datenbank sieht (idr) allerdings anders aus. Z.B. als B(*)-Baum, ISAM, oder sonstwie, dabei gibt es kein "vorne" oder "hinten" und wenn man keine Sortierung angibt, sind die Ergebnisse meist zufällig, nach einem Standardparameter Sortiert (z.B. aufsteigend nach dem Primärschlüssel) oder von der verwendeten Engine abhängig (z.B. INNODB oder MyISAM bei MySQL)
Eine Sortierung irgendeiner Art wie hier gewünscht hat auf jeden Fall durch das Select Statement formuliert zu werden, da ein verlassen auf eine zuverlässige Einfügung reiner Zufall sein kann oder durch andere Fehler produziert werden könnte und keinesfalls irgendwie sicher ist.
Deine Frage ist die Gelegenheit für dich, etwas mehr über SQL/MySQL zu lernen und nicht "ne ich will nicht" zu sagen und irgendeine Rundherum Lösung zu suchen, weil auch schlechter Code irgendwie ja doch funktioniert.
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
piepmax - 38
Profi
(offline)
Dabei seit 04.2006
794
Beiträge
|
|
Geschrieben am: 12.01.2011 um 18:37 Uhr
|
|
Zitat von Ketzu: Dem ganzen liegt schon der Fehlschluss zugrunde das die Datenbank als Tabelle gespeichert wird und nur hinten etwas angehängt wird.
Speicherung in einer Datenbank sieht (idr) allerdings anders aus. Z.B. als B(*)-Baum, ISAM, oder sonstwie, dabei gibt es kein "vorne" oder "hinten" und wenn man keine Sortierung angibt, sind die Ergebnisse meist zufällig, nach einem Standardparameter Sortiert (z.B. aufsteigend nach dem Primärschlüssel) oder von der verwendeten Engine abhängig (z.B. INNODB oder MyISAM bei MySQL)
Eine Sortierung irgendeiner Art wie hier gewünscht hat auf jeden Fall durch das Select Statement formuliert zu werden, da ein verlassen auf eine zuverlässige Einfügung reiner Zufall sein kann oder durch andere Fehler produziert werden könnte und keinesfalls irgendwie sicher ist.
Deine Frage ist die Gelegenheit für dich, etwas mehr über SQL/MySQL zu lernen und nicht "ne ich will nicht" zu sagen und irgendeine Rundherum Lösung zu suchen, weil auch schlechter Code irgendwie ja doch funktioniert.
Ich verwende jetzt vor dem auslesen einfach den SQL Befehl einer deiner Vorschreiber um die Tabelle zu sortieren.
Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.
|
|