Position eines SQL Results in einem SQL Query

Bash, Shell, PHP, Python, Perl, CGI
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Position eines SQL Results in einem SQL Query

Post by djbennyf »

Ich habe z.B. 400 Einträge die auf ein SQL Query passen. Von diesen 400 wähle ich einen aus. Nun will ich wissen der wievielte Entrag dieser ausgewählte es ist. Leider muss ich dass bei 200 Einträgen machen (dauert ca 15 Sekunden):

$allbil = mysql_query("SELECT id FROM bilder WHERE ok=0 AND galerieid=''$id ORDER BY id");
$yy = 1;
while ($p = mysql_fetch_array($allbil)) {
if ($p[id] == $bildid) {
$thatsit = $yy;
}
$yy++;
}

Nunja in der DB sind ca. 20000 Einträge... Sprich es muss einen schnelleren weg geben. Denn pro while Schleife durchläuft er ca. 400 Enträge. Und dass 200 mal pro Seite. Alsi 80000 Einträge pro Seite... Zuviel!

Vielen Dank für eure Hilfe
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Position eines SQL Results in einem SQL Query

Post by Roger Wilco »

Kannst du die Postition nicht irgendwie an dem Wert 'id', den du verwendest festmachen?
Das einfachste(tm) ist vielleicht eine weitere Spalte mit durchgehend aufsteigenden Integer-Werten (a.k.a. auto_increment) hinzuzufügen, Damit hast du mit der Abfrage gleich auch die Postition.
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: Position eines SQL Results in einem SQL Query

Post by rob »

DjBennyF wrote: $allbil = mysql_query("SELECT id FROM bilder WHERE ok=0 AND galerieid=''$id ORDER BY id");
$yy = 1;
while ($p = mysql_fetch_array($allbil)) {
if ($p[id] == $bildid) {
$thatsit = $yy;
}
$yy++;
}
Ã?hms, mal daran gedacht die auswahl $p[id]==$bildid mit ins SQL-Statement rein zu nehmen?

SELECT id FROM bilder WHERE (ok=0) AND (id=$bildid)

Oder les ich deinen Code falsch?