PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [mysql] Datensatz Nr rauskriegen



oPerILaZ
25.07.2002, 15:11
hi

also ich lass mir nen datensatz anhand einer id ausgeben ("SELECT * FROM t WHERE id = 23 ")

ist es moeglich die datensatz nr rauszubekommen
also das feld mit der id 23 ist der x eintrag meiner tabelle t, diese

ich will x wissen, gibts da nen mysql befehl der mir nur den "datensatz zeiger" zurueckgibt?

uff, hoffentlich versteht das wer :D

thxForRE
mfg

RRT
25.07.2002, 16:54
$nr=0;
$suche=23;
$result mysql_query("select * from t");

while($row = mysql_fetch_row($result)){
$nr++;
if($row[0] == $suche){ // wenn erste spalte id ist ?
exit; // stimmt exit??
}
}

echo $suche." ist im ".$nr." Datensatz.";

müsste gehn, oder?

oPerILaZ
25.07.2002, 17:03
ja danke,
aber dazu muesst ich halt die ganzen reihen einlesen, und genau das wollt ich vermeiden

gibts da kein befehl zu?
ich mein andersrum gehts doch auch, da kann ich doch mit LIMIT bestimmen welchen datensatz ich haben will
SELECT * FROM tb LIMIT 5, 1
gibt mir dann nur den 5ten datensatz aus

ich will nun aber einfach wissen der wievielte datensatz das id feld xy ist

RFC822
25.07.2002, 17:53
Bleibt das nicht dem SQL-Server überlassen, in welcher Reihenfolge er die Daten ausgibt?

oPerILaZ
26.07.2002, 09:31
hi
hmm
aber es ist ja moeglich sich mit LIMIT einen datensatz rauszupicken, also ist die reihenfolge mysql ja bekannt
?

och mano

foppi
26.07.2002, 09:58
> also ist die reihenfolge mysql ja bekannt
die Reihenfolge in der es eingefügt wurde. limit sollte man immer mit Sortierung verwenden

RRT
26.07.2002, 11:12
Original geschrieben von fippo
die Reihenfolge in der es eingefügt wurde.

jo oder du kannst mit ORDER by ID|Titel noch ordnen. Außerdem noch auf und absteigend ASC|DESC.

Wenn du aber einen Datensatz suchst, mit einer bestimmten ID musst du alle Datensätze einlesen. Du könntest in die Query noch Limit implementieren, wobei du dann immer 10 Stück ausliest, weiß aber nicht was es bringt. Ich schätze an der Geschwindigkeit merkst du nichts.

RFC822
26.07.2002, 11:22
Wobei diese ID ja sowieso nicht aussagekräftig ist -- man braucht nur einen Datensatz am Anfang einfügen, während das Programm läuft, und schon ist alles durcheinander. Warum verwendest du nicht ein ganz normales "ID"-Feld, evtl. noch mit AUTO_INCREMENT?

oPerILaZ
26.07.2002, 11:39
also
ich habe ne film datenbank, nun kann man sich einfach durch die datensaetzte blaettern, sagen wir ich hab zehn datensaetze
das mach ich mit limit
$dbPos = 5;
$res = mysql_query("SELECT id, film FROM tb LIMIT ".$dbPos.", 1");

so nun hab ich den film den ich als fuenftes eingegeben habe
wenn ich jetzt weiter "blaetter" erhoehe ich die var dbPos einfach um einen, und schon krieg ich den sechsten datensatz, usw. und so fort

nun hab ich aber auch noch die moeglichkeit mir einen film aus einer select auswahl auszuwaehlen, und mir die dazugehoerigen daten anzeigen zu lassen, auf der selben ansicht,wo ich unten die blaetter leiste habe (zurueck, datensatz nr, vorwaerts)

den ausgewaehlten film bekomme ich anhande des primary key`s(in dem fall id), alles schoen und gut,
nur wenn ich von der position aus einen datensatz weiter blaettern will, lande ich beim ersten (dbPos =1 ), weil mir ja die aktuelle datensatz nr (dbPos) fehlt
also will ich von dem einen film den ich gerade ausgewaehlt habe die eintrags nummer, die ja existiert da ich ja den film mit LIMIT 7, 1 auch angezeigt bekomme

okay, seh es ein scheint wahscheinlich kein befehl fuer zu geben
also muss ich die datensaetz durchschleifen, was aber die performance nicht gerade steigert


egal, danke fuer eure muehe