Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Position eines Datensatzes herausfinden

Hallo,

habe eine Tabelle namens sayings mit zwei Feldern (id, txt), in der ungefähr 200.000 Datensätze gespeichert sind. Die partielle Ausgabe wird nach dem Feld txt sortiert, so werden z.B. einmal alle Datensätze angezeigt, die mit 'a' beginnen.

Nun möchte ich bei der Ausgabe anzeigen lassen, welche Position (unter Berücksichtigung der Sortierung) der jeweilige gefundene Datensatz in der Tabelle hat.

Mit freundlichen Grüßen,
Ben

Hier gehts zum Orginal Eintrag "Position eines Datensatzes herausfinden" im Forum

Antworten

muss es mysql sein? schwieriger, oder reicht es wenn du im php eine variable hochzählst?
$nummer=1;
while($row=mysql_fetch_xy($result) {
//ausgabe
$nummer++;
}


2.

Hallo,

erstmal danke für die Antwort. Habe einen kleinen Fehler gemacht in der obigen Frage. Die Position soll ohne Berücksichtigung der aktuellen Abfrage ermittelt werden.

Kurz gesagt: Ich möchte anhand der id herausfinden können, der wievielte Datensatz in Bezug auf die gesamte Tabelle das ist. Beispiel:

id | txt
---------
2 | abc
4 | bcd
5 | cde
7 | def
8 | efg

Der Datensatz mit der id 7 wäre an Position 4. Verstanden?


3.

Zitat:
Der Datensatz mit der id 7 wäre an Position 4. Verstanden?
Jawohl SIR! ;)

Spontan wüsste ich nur blöde und vor allem zeitaufwendige umwege über subqueries.. Vielleicht kannst du beschreiben für was du das brauchst, evtl gibts eine andere möglichkeit..


4.

MySQL kennt keine Nummerierungen. Das muss man "händisch" zählen.


5.

Naja im gewissen Sinne gibt es ja schon Nummerierungen, man kann doch z.B. per mysql_result auch ein Offset angeben.

Zu meinem Problem: Ich habe eine sich ständig erweiternde Tabelle (zwei Felder, id und txt) mit ungefähr 200.000 Sprüchen. Es wird später zwei Möglichkeiten geben, die Datensätze auszugeben: Entweder per Suchfunktion (a) oder seitenweise getrennt nach Anfangsbuchstaben, sprich 26 verschiedene Möglichkeiten (b).

Wenn ich nun in der Suchfunktion beispielsweise nach 'Arbeit' suche, werden mir rund 1.800 Datensätze seitenweise ausgegeben. Jetzt kommt die Nummerierung ins Spiel: Vor jedem Datensatz soll eine Verknüpfung zu der richtigen Seite bei Ausgabemöglichkeit (b) stehen, sodass man mit einem Klick automatisch z.B. auf Seite 24 am richtigen Datensatz landen würde.


6.

also wenn du pro anfangsbuchstabe nur eine seite hast, ohne blätterfunktion wirds ja nicht schwierig. den anfangsbuchstaben kannst du ja problemlos rausfinden, um zum richtigen datensatz zu springen benutzt du einen html-anker, in dem du die eindeutige id des datensatz speicherst, dann kannst du über b.php#4711 genau zum richtigen datensatz springen..


7.

Oh ja sowas hab ich schon letztens öfters gemacht. Beispiel (unabhängig von der Sortierung)

Code:                   In Zwischenablage kopieren (nur IE)
1">




8.

BenniG: Ich habe nicht pro Anfangsbuchstabe eine Seite, auch wenn das vllt. oben so aussah. Ich habe z.B. eine a.php, die seitenweise aufgelistet wird. Und ich möchte wissen, auf welcher Seite der Datensatz mit der id xyz steht.


9.

Zitat:
SELECT txt, COUNT(t2.id)+1 AS position
FROM table t1
LEFT JOIN table t2 ON t2.id < t1.id
GROUP BY t1.id
ORDER BY id
Das ist doch obergrausam - ein irrer Ressourcenfresser für eine simple Nummerierung. Um den Faktor Trillionen dürfte dieses schneller gehen:

Code:                   In Zwischenablage kopieren (nur IE)
2">




10.

Zitat:
[code]SET @n = 0
SELECT txt, @n := @n+1 AS position FROM table

Funzt das so auch noch?

Zitat:
[code]SET @n = 0
SELECT txt, @n := @n+1 AS position FROM table ORDER BY id DESC LIMIT 20,10

Und jetzt soll keine Ausgabe wie 1, 2, 3, 4... kommen sondern eher 18899, 18898, 18897 ...

Ausserdem sollte es ja unabhängig von Sortierung und Limit geschehen. Das tut dein Beispiel nicht :>


11.

Zitat:
Und jetzt soll keine Ausgabe wie 1, 2, 3, 4... kommen sondern eher 18899, 18898, 18897 ...
Das ist Quatsch: WENN, dann sollte doch eher 20, 21 usw. kommen - nämlich genau die Nummerierung ab Offset (aus der LIMIT Klausel). Und dann ist es doch trivial:

Code:                   In Zwischenablage kopieren (nur IE)
3">

Es ist doch SELBSTVERSTÄNDLICH die Nummerierung im aktuellen Kontext (gem. ORDER BY Klausel) gemeint und nicht irgendeine andere Nummerierung.

Zitat:
Ausserdem sollte es ja unabhängig von Sortierung und Limit geschehen.
Nein, es gibt keine "unabhängige" Sortierung. Nie und nirgends - alles hängt vom ORDER BY ab - und wenn eine ORDER BY Klausel fehlt, zieht die Default Sortierung (die man via ALTER TABLE auch vorgeben kann).


12.

Es ist nicht selbstverständlich. Denn du hast es grade wunderbarerweise auchnoch fehlerhaft gemacht. ORDER BY id DESC würde die umgekehrte Reihenfolge fordern. Wenn man btw eine Rangliste hat, und in dieser bestimmte Einträge suchen will, mit Rangnummernanzeige, wird spätestens dort dein Script versagen.

Beispiel:

SELECT txt, %?% AS possition FROM table WHERE id = 200
Was würdest du bei %?% einsetzen, um die Position zu erhalten, die bei der normalen Liste sein würde?


13.

Zitat:
Wenn man btw eine Rangliste hat, und in dieser bestimmte Einträge suchen will, mit Rangnummernanzeige, wird spätestens dort dein Script versagen.
Totaler Blödsinn - Du willst es nur nicht eingestehen, dass Deine Nummerierung grauenhaft ist.

Ich sehe überhaupt keinen Unterschied in der Ausgabe - was willst Du eigentlich hier erzählen? Wo produziert Deine Methode einen anderen (besseren?) Output? Zeig mir den Query, der nummeriert aber irgendwie doch nicht nummeriert (oder wie?).


14.

Zitat:
Was würdest du bei %?% einsetzen, um die Position zu erhalten, die bei der normalen Liste sein würde?
Zeig doch erst einmal DEINE Lösung zu dieser Frage.

Es ist aber so oder so alles Käse: Die Vorgabe ist eine Suche mit einer Treffermenge - und diese Menge soll nummeriert sein. Genau das macht meine Lösung - nicht mehr, nicht weniger.


15.

Hab ich doch schon, braucht nur die WHERE-Zeile und die ORDER kann man dann rausschmeißen.

Code:                   In Zwischenablage kopieren (nur IE)
4">




16.

Das ist doch SCHWACHSINN HOCH TAUSEND!! Merkst Du gar nichts? In welchem Kontext ist das nun die 4711-te Zeile?


17.

Zitat:
Rana postete
Das ist doch SCHWACHSINN HOCH TAUSEND!! Merkst Du gar nichts? In welchem Kontext ist das nun die 4711-te Zeile?
SET @n = 0
SELECT txt, @n := @n+1 AS position FROM table

In dem.


18.

Zitat:
Rana postete
Es ist aber so oder so alles Käse: Die Vorgabe ist eine Suche mit einer Treffermenge - und diese Menge soll nummeriert sein. Genau das macht meine Lösung - nicht mehr, nicht weniger.
Wieder falsch, die Vorgabe ist eine Suche mit der Positionsangabe in der Gesamtliste. Wer lesen kann, ist klar im Vorteil:

Zitat:
Zu meinem Problem: Ich habe eine sich ständig erweiternde Tabelle (zwei Felder, id und txt) mit ungefähr 200.000 Sprüchen. Es wird später zwei Möglichkeiten geben, die Datensätze auszugeben: Entweder per Suchfunktion (a) oder seitenweise getrennt nach Anfangsbuchstaben, sprich 26 verschiedene Möglichkeiten (b).

Wenn ich nun in der Suchfunktion beispielsweise nach 'Arbeit' suche, werden mir rund 1.800 Datensätze seitenweise ausgegeben. Jetzt kommt die Nummerierung ins Spiel: Vor jedem Datensatz soll eine Verknüpfung zu der richtigen Seite bei Ausgabemöglichkeit (b) stehen, sodass man mit einem Klick automatisch z.B. auf Seite 24 am richtigen Datensatz landen würde.




19.

Da scheinbar mein Problem noch nicht von allen erkannt wird, nochmal ganz einfach:

Ich habe eine Tabelle mit 200.000 Datensätzen und möchte anhand einer id die Position des Datensatzes unter Berücksichtigung einer bestimmten Sortierung ermitteln.

Bisher hat leider noch keiner von euren Vorschlägen funktioniert - oder ich bin zu doof, um sie richtig zu verstehen.

Mit freundlichen Grüßen,
Ben


20.

Zitat:
Ich habe eine Tabelle mit 200.000 Datensätzen und möchte anhand einer id die Position des Datensatzes unter Berücksichtigung einer bestimmten Sortierung ermitteln.
Genau wie ich es gesagt habe - Du brauchst nur die Sortierung durchzuführen und fertig.

DASPRiDs mangelndes Verständnis liefert IMMER die Nummerierung gemäß ID. Dabei ist das nicht gefragt - sondern "eine bestimmte" (nicht genannte) Sortierung. Das geht so super einfach:

Code:                   In Zwischenablage kopieren (nur IE)
5">

Jetzt hast Du die Tabelle in der gewünschten "bestimmten" Sortierung (nach "irgendwas") und die Spalte "position" ist die durchlaufende Nummer.

Wer lesen kann ist klar im Vorteil - sehe ich auch so. SInd also doch alle der gleichen Meinung.


21.

P.S.: Um es noch doofer zu machen, speicherst Du eine temporäre Tabelle nur mit id und der Positionsangabe:

Code:                   In Zwischenablage kopieren (nur IE)
6">

Und dann kannst Du, egal welche id man Dir auftischt, simpelst abfragen:

Code:                   In Zwischenablage kopieren (nur IE)
7">

Kannst aber auch gerne den grauenhaften JOIN und den GROUP BY auf die 200.000 Zeilen loslassen - geht bestimmt turboschnell...


22.

Omg das kann doch nicht wahr sein ...

Zitat:
Ich habe eine Tabelle mit 200.000 Datensätzen und möchte anhand einer id die Position des Datensatzes unter Berücksichtigung einer bestimmten Sortierung ermitteln.

Das setzt ein WHERE vorraus mit der Anfrage nach einer Zeile mit einer bestimmten ID. Aber wart einfach ab, er wirds dir bestimmt gleich noch ein 3. mal erklären.


23.

[quote]Rana postete
P.S.: Um es noch doofer zu machen, speicherst Du eine temporäre Tabelle nur mit id und der Positionsangabe:

Code:                   In Zwischenablage kopieren (nur IE)
8">

Und dann kannst Du, egal welche id man Dir auftischt, simpelst abfragen:

Code:                   In Zwischenablage kopieren (nur IE)
9">

Kannst aber auch gerne den grauenhaften JOIN und den GROUP BY auf die 200.000 Zeilen loslassen - geht bestimmt turboschnell...[/quote] So hat er dann jedoch 2 Queries. Zudem muss der Erste mitdem SELECT trotzdem alle 200.000 Zeilen durchgehen.


24.

Zitat:
SET @n = 0
SELECT txt, @n := @n+1 AS position FROM table

In dem.
Wieder falsch. Deine Sortierung ist IMMER die nach der ID, meine Sortierung ist (ohne ORDER BY) die Sortierung gemäß Default - das KANN die ID sein, braucht es aber nicht. "ALTER TABLE ORDER BY text DESC" würde die Tabelle anders sortieren und eine andere Nummerierung ergeben.

Wie es die Vorgabe übrigens wünscht.


25.

Zitat:
Zudem muss der Erste mitdem SELECT trotzdem alle 200.000 Zeilen durchgehen.
Dann legt man (wenn es wirklich so machen will) natürlich einen Index (hier sogar den Primärschlüssel) auf die Id.

Zudem ist nicht die (lachhafte) Anzahl Queries das Problem, sondern der schreckliche JOIN auf sich selbst - der mit Sicherheit um Welten langsamer ist als diese simple Lösung.


26.

Eben nicht, er will, dass die Sortierung immer gleich bleibt.


27.

Zitat:
Eben nicht, er will, dass die Sortierung immer gleich bleibt.
Was "eben nicht"?


28.

Zitat:
SET @n := 0
SELECT id, txt, @n := @n+1 AS posi FROM spruch ORDER BY txt
So sieht die Abfrage grad bei mir aus, funktioniert aber nicht.

Fehler:
Zitat:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id, txt, @n := @n+1 AS posi FROM spruch ORDER BY txt' at



29.

Wenn Du Abfragen in phpmyadmin testest, mußt Du ein Semikolon am Ende der ersten Abfrage machen.
Machst Du die Abfragen in PHP, kannst Du nur jeweils eine Abfrage pro mysql_query() schreiben.


30.

@DASPRiD:

So, jetzt wollen wir Dich mal quälen (aber die Stille läßt ohnehin Unheil ahnen). Bauen wir ein simples Beispiel nach Anforderung:


Man habe die simple Tabelle mit zwei Feldern, id und txt. Eine Beispieltabelle mit folgendenden Inhalten sei gegeben:

Code:                   In Zwischenablage kopieren (nur IE)
10">

Die Ausgabe und Sortierung der Tabelle soll (gemäß Vorgabe) nach dem Alphabet geschehen auf Grund des Inhalts von txt. Die entsprechende Sortierung in phpmyadmin ergibt folgende Struktur:

Code:                   In Zwischenablage kopieren (nur IE)
11">

Welche Position hat der Datensatz mit der id == 5? Antwort: 4

Meine Lösung ist wie oben skizziert recht trivial, wie ist Deine Lösung?

P.S.: Der Vollständigkeit halber:

Code:                   In Zwischenablage kopieren (nur IE)
12">

Kann so direkt in phpmyadmin getestet werden.


31.

Okay jetzt funktioniert die Abfrage zwar, nur noch nicht so, wie ich es gerne möchte.

Jetzt wird eine Nummerierung der Suchergebnisse vorgenommen, wie ich sie auch beispielsweise mit einem Zähler außerhalb von SQL durchführen könnte. Was ich aber haben möchte ist die auf einen anderen Tabellenausschnitt bezogene Position der jeweiligen Datensätze. Siehe Beispiel oben.

Noch ein Beispiel:

Die Tabelle enthält Datensätze, dessen txt-Felder mit allen möglichen Buchstaben anfängt. Ich habe eine a.php und eine suche.php. Die a.php zeigt alle Datensätze an, wo das txt-Feld mit dem Buchstaben a anfängt. Die suche.php durchsucht die gesamte Tabelle nach beliebigen Zeichenketten.

Nehmen wir an, der Spruch "Arbeit ist toll" steht in der a.php auf Seite 23 und ist an Position 2.342 in der Tabelle (nur Datensätze, die mit a anfangen).

Wir suchen jetzt per suche.php alle Datensätze, die das Wort "Arbeit" beinhalten. Darunter werden wir auch den Spruch "Arbeit ist toll" finden. In Bezug auf das, was die a.php ausgeben würde, soll jetzt bei der Suche die entsprechende Position des gefundenen Datensatzes angezeigt werden.


32.

Zitat:
Was ich aber haben möchte ist die auf einen anderen Tabellenausschnitt bezogene Position der jeweiligen Datensätze. Siehe Beispiel oben.
Wo "oben"?

Durch welchen Query entsteht die von Dir gezeigte Tabelle? Bitte EXAKT aufschreiben.


33.

P.S.: Wahrscheinlich hast Do soeben bemerkt, dass Du selbstverständlich JEDEN Select mit einer neuen Nummerierung versehen kannst?! Genau das, was ich am Anfang vorgeschlagen habe!?


34.

Bitte Antwort #31 lesen, da ist ein neues Beispiel.


35.

@Rana: es gibt auch Menschen, die arbeiten. Da kann man nicht alle paar Sekunden wie du ins Forum schauen.

Wegen deiner Frage

Code:                   In Zwischenablage kopieren (nur IE)
13">

Ein Query, statt 3. Im übrigen müsste man mal deine und mein Query benchmarken, um wirklich sagen zu können, welche Methode jetzt die shcnelere ist.


36.

Fehler

SQL-Befehl: Dokumentation

SELECT txt, COUNT( t2.id ) +1 AS position
FROM TABLE t1
LEFT JOIN TABLE t2 ON t2.id < t1.id
GROUP BY t1.id
ORDER BY txt
LIMIT 0 , 30

MySQL meldet: Dokumentation
#1052 - Column 'txt' in field list is ambiguous


37.

Nach Korrektur - ergibt die Ausgabe aber nicht 4, sondern eine vollständige Tabelle. Du sollst NUR für die ID = 5 die Position bestimmen.


38.

Ah hab deine Frage missgelesen, hier nochmal so wie du meintest:

Code:                   In Zwischenablage kopieren (nur IE)
14">




39.

Zitat:
Wir suchen jetzt per suche.php alle Datensätze, die das Wort "Arbeit" beinhalten. Darunter werden wir auch den Spruch "Arbeit ist toll" finden. In Bezug auf das, was die a.php ausgeben würde, soll jetzt bei der Suche die entsprechende Position des gefundenen Datensatzes angezeigt werden.
Das hat so keinen Sinn - schreibe bitte den vollständigen Query auf, der Dein Suchergebnis liefert. In diesen Query kannst Du die Position als Nummerierung mit aufnehmen.


40.

Zitat:
Fehler

SQL-Befehl: Dokumentation

SELECT COUNT( t2.id ) +1 AS position
FROM table t1
LEFT JOIN table t2 ON t2.txt < t1.txt
WHERE id =5
GROUP BY t1.id
LIMIT 0 , 30

MySQL meldet: Dokumentation
#1052 - Column 'id' in where clause is ambiguous

Verbessere ich den Fehler, ergibt sich:

Code:                   In Zwischenablage kopieren (nur IE)
15">

Liefert als position den Wert 2 - total falsch.

Und nun?


41.

Die Suchfunktion sieht so aus:

Zitat:
SELECT txt FROM spruch WHERE ucase(txt) LIKE '%$search%' LIMIT $start, $perpage
Die Ausgabe aller Datensätze, die mit a beginnen, so:

Zitat:
SELECT txt FROM spruch WHERE ucase(txt) LIKE 'A%' LIMIT $start, $perpage
(Sorry, war grad noch ein kleiner Fehler drin)


42.

Rana: Japp, gut erkannt. Es fehlt natürlich die Unterscheidung bei gleichen Textblöcken, ich ging von verschiedenen aus.

Last but not least:

Code:                   In Zwischenablage kopieren (nur IE)
16">

So werden im LEFT JOIN genau 3 Einträge gefunden, einmal aaa, und 2 mal bbb, die jeweils eine kleinere ID haben. +1 Ergibt sich daraus die Position 4.


43.

Und jetzt stelle dir dazu noch eine etwas komplexere Sortierung vor, beispielsweise eine Tabelle mit mehr Felder und beispielsweise "ORDER BY nachname ASC, vorname ASC, strasse DESC" - egal wie und dann auch noch 200.000 Datensätze - wie grausam wird der Query, wie sieht die Performance aus (allenfalls schlechter!) - und wozu? Warum nicht die simple Nummerierung?

P.S.: Noch gemeiner - ich sortiere die Tabelle erneut wie "ALTER TABLE `table` ORDER BY txt, RAND()" - jetzt sind die IDs nicht untersortiert, sondern "wild". Mein Algorithmus funktioniert jetzt noch - Deiner nicht.


44.

Zitat:
Die Suchfunktion sieht so aus:
Die Suchfunktion ist nicht das spannende - die Sortierung der Tabelle und der "Auschnitt" um den es geht - das will ich sehen. Wie sieht das aus?


45.

Zitat:
Rana postete
P.S.: Noch gemeiner - ich sortiere die Tabelle erneut wie "ALTER TABLE `table` ORDER BY txt, RAND()" - jetzt sind die IDs nicht untersortiert, sondern "wild". Mein Algorithmus funktioniert jetzt noch - Deiner nicht.
Ja mag sein, das bei komplexeren Sortierungen mein Query versagt. Im übrigen funzt das mit RAND() nicht, da du so erst die Numerierung mit RAND() erstellst, und dannach mit RAND() eine Liste ausgeben würdest.


46.

Zitat:
Rana postete
Zitat:
Die Suchfunktion sieht so aus:
Die Suchfunktion ist nicht das spannende - die Sortierung der Tabelle und der "Auschnitt" um den es geht - das will ich sehen. Wie sieht das aus?
Möchtest du jetzt 20.000 Datensätze hier haben? Habe doch in Antwort #31 ein ausführliches Beispiel geschrieben, wie es aussehen soll und wie die Tabellen aussehen.


47.

Zitat:
Möchtest du je[tzt 20.000 Datensätze hier haben .
Du verwechselst da was: DU möchtest Hilfe haben - nicht ich.

Zitat:
Habe doch in Antwort #31 ein ausführliches Beispiel geschrieben, wie es aussehen soll und wie die Tabellen aussehen.
Nein, Du hast nur "erzählt" wie Du Dir es vorstellst. Dies ist Dein Beitrag 31:

Zitat:
Okay jetzt funktioniert die Abfrage zwar, nur noch nicht so, wie ich es gerne möchte.

Jetzt wird eine Nummerierung der Suchergebnisse vorgenommen, wie ich sie auch beispielsweise mit einem Zähler außerhalb von SQL durchführen könnte. Was ich aber haben möchte ist die auf einen anderen Tabellenausschnitt bezogene Position der jeweiligen Datensätze. Siehe Beispiel oben.

Noch ein Beispiel:

Die Tabelle enthält Datensätze, dessen txt-Felder mit allen möglichen Buchstaben anfängt. Ich habe eine a.php und eine suche.php. Die a.php zeigt alle Datensätze an, wo das txt-Feld mit dem Buchstaben a anfängt. Die suche.php durchsucht die gesamte Tabelle nach beliebigen Zeichenketten.

Nehmen wir an, der Spruch "Arbeit ist toll" steht in der a.php auf Seite 23 und ist an Position 2.342 in der Tabelle (nur Datensätze, die mit a anfangen).

Wir suchen jetzt per suche.php alle Datensätze, die das Wort "Arbeit" beinhalten. Darunter werden wir auch den Spruch "Arbeit ist toll" finden. In Bezug auf das, was die a.php ausgeben würde, soll jetzt bei der Suche die entsprechende Position des gefundenen Datensatzes angezeigt werden.
Keine Tabelle, nix. Anstatt zu erzählen solltest Du (ich wiederhole mich - aber es geht nicht anders) den Query aufschreiben, der die oben beschrieben Tabelle erstellt. Nicht den Suchquery. Jetzt klarer.

Wenn Du nicht in der Lage bist, vernünftig zu formulieren und die Queries zu nennen, kann Dir keiner helfen. Die Entscheidung liegt bei Dir.


48.

So, thx Rana (ich wunder mich, dass ich das sage ^^). Hab mal einen Benchmark gemacht, und der hat mich nun ganz klar überzeugt. Der Unterschied liegt zwar nicht in den von dir beschriebenen Dimensionen, ist jedoch beachtlich:

Aus
Code:                   In Zwischenablage kopieren (nur IE)
17">

habe ich gemacht

Code:                   In Zwischenablage kopieren (nur IE)
18">

Das Benchmarkergebnis hat mich echt überrascht. Habe beide Methoden 100 mal durchlaufen lassen. Die alte Methode brauchte dafür 3.7, die neue Methode nur 0.2 Sekunden. Wieder was gelernt, thx.


49.

Zitat:
Im übrigen funzt das mit RAND() nicht, da du so erst die Numerierung mit RAND() erstellst, und dannach mit RAND() eine Liste ausgeben würdest.
Nein so natürlich nicht. Nach einem "ALTER TABLE `table` ORDER BY txt, RAND()" kann ich jederzeit diese Tabelle in stets der gleichen Reihenfolge ausgeben indem ich "SELECT * FROM `table`" mache - das ist ja der Witz.

Egal, wie die Sortierung zustande kommt, ich bekomme eine reproduzierbare Nummerierung hin, wenn ich einen SELECT ohner weitere ORDER BY Klausel durchführe. Das ganze soll ja nur ein Beispiel sein, dass meine Lösung nicht darauf angewiesen ist zu "wissen", welche Sortierung die gewünschte ist - sie funktioniert immer nach dem gleichen Schema.


50.

Man müßte noch einen "cleanen" Benchmark durchführen (ohne weiter ORDER BY Klauseln), einfach nur x Datensätze nummerieren. Wieviele Datensätze hast Du beim Benchmark gehabt?


51.

60 und ein paar zerquetschte.


52.

Zitat:
CREATE TABLE `spruch` (
`id` int(11) NOT NULL auto_increment,
`txt` text NOT NULL,
PRIMARY KEY (`id`)
)



53.

@Bennosch:

Ok - das war es. Du willst nicht und ich kann nicht. Dann eben nicht, aber Gedanken lesen kann ich nicht und Deine Erklärungen sind unzureichend.


54.

Gut, und ich kann es auch nicht. Was soll ich denn anderes aus den beiden unten genannten Sätzen verstehen? Ein bisschen hilfsbereitschaft wäre jemandem gegenüber, der nicht so fit ist in Sachen SQL, vielleicht angebrachter, als so ein plumper Kommentar, wie du sie auch schon den anderen Leuten gegenüber in diesem Thread gebracht hast. So etwas passt nicht grade in die Netiquette, vielleicht überdenkst du dein Verhalten nochmal.

Zitat:
Durch welchen Query entsteht die von Dir gezeigte Tabelle? Bitte EXAKT aufschreiben.



55.

Ich glaube er meint den SELECT-Query für die Liste/Suche?


56.

Machen wir einen letzten Versuch - wir nehmen an, es gäbe die Funktion id2position() wie gewünscht. Zeige das resultierende Coding, wie die Funktion beim Seitenaufbau behilflich ist.


Hier gehts zum Orginal Eintrag "Position eines Datensatzes herausfinden" im Forum
 
phpforum.de | Impressum