Primärschlüssel (MySql) -> Problem

Mein Problem ist folgendes: Ich habe in einer Tabelle einen Wert als Primärschlüssel festgelegt, der Wert heißt Index. Nun will ich aus dieser Tabelle für eine Seite jeweils den *ersten* Eintrag auslesen, das Problem ist aber: die Tabelle kann beliebig editiert werden, sodass u.U. der Eintrag mit dem Index 0 bzw 1 (jedenfalls der erste) auch gelöscht werden kann. Das hat allerdings zur Folge, dass es keinen Eintrag mit dem Index 1 mehr gibt, die Seite findet nichts, keine Ausgabe, Jobbe traurig.
:(
Was ich jetzt praktisch fände wäre ne Option, dass die Einträge einer Tabelle automatisch 'zusammengeschoben' werden sprich angenommen es existieren 3 Einträge A, B, C wobei A index 1 hat, B 2, C 3, und jezt A gelöscht wird, dann soll B den Index 1 bekommen und C 2.

Ich hoffe das war jetzt nicht zu verwirrt :) Btw: Wenn dass schonmal ebsprochen wurde tuts mir leid, habe mit der Suchfunktion nichts passendes gefunden leider. Mit google auch nicht. Habe wohl falsche gesucht.
 
also das neu sortieren solltest du dir aus dem kopf schlagen. das gibt sicherlich später probleme... Aber wenn du jeweils den ersten haben willst ist das doch einfach!:

$output = mysql_db_query(db,"SELECT * FROM table WHERE bedingung = 'erfuellt' ORDER BY index LIMIT 1");

So hast du den ersten beitrag. ob er nun den index 1, 2 oder 78234845 hat spielt keine rolle. Grund ist, dass die struktur geordnet ist (ORDER BY) und das LIMIT 1 besagt, dass nur ein datensatz ausgewählt wird...

ich hoffe geholfen zu haben
 
Original von JoBbE
nicht ganz weil auch noch die möglichkeit bestehen soll, bezielt einträge anzuzeigen :]

aber wenn du diese 'ids' der reihe nach nummeriert haben willst (ohne lücke) müstest dannst du dann so oder so nicht mehr eindeutig sagen welchen du willst
wenn du also den 2ten datensatz haben wilslt dann kannst du das auch mit "SELECT * FROM `user` LIMIT 1, 1" machen....den 4ten so: "SELECT * FROM `user` LIMIT 3, 1", usw.....
 
musst du nicht....aber wenn dann irgendwann die frage kommt "wie kann ich meine seite optimieren" dann ist es an der zeit dies zu ändern....
 
Zurück
Oben