SQL Abfrage Reihenfolge DESC aber neuestes unten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

SQL Abfrage Reihenfolge DESC aber neuestes unten

Beitrag von mgutt »

Wenn ich per sql-Abfrage per DESC sortiere ist das neueste oben und dann immer älter nach unten.. ich will also die 20 neuesten ergebnisse ausgeben lassen:
100.000
99.999
99.998
usw.
Dummerweise will ich es aber genau anders herum. Die Abfrage ist zwar schön schnell (ca. 0,3 Sekunden), aber die Reihenfolge nicht so wie ich sie gerne hätte.

Gehe ich dagegen hin und mache daraus ASC und setze das Limit auf 99979,20 dann braucht die Abfrage ewig (ca. 3-4 Sekunden), aber liefert mir die Reihenfolge, die ich gerne hätte:
usw.
99.998
99.999
100.000
Also wie schnell machen und gleichzeitig die gewünschte Reihenfolge erreichen? Weiterhin brauche ich für ASC zwei Abfragen. Die 1. klärt die Anzahl der Posts (wegen dem Limit) und die 2. ist erst für die Ausgabe der Daten zuständig. Damit kann ich zwar leben, aber mit einer wäre ich glücklicher :D
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
Ivan
Mitglied
Beiträge: 267
Registriert: 28.12.2004 17:26
Wohnort: Mössingen, BW
Kontaktdaten:

Beitrag von Ivan »

welchen Typ hat die Spalte??
Muss int sein...
Der Götterbote - Die Zeitung von The-Arena
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Die Abfrage geht über drei Tabellen. Hier die Abfrage:

Code: Alles auswählen

$start_post = $chat_posts - 21;
$sql = "SELECT u.user_id, u.username, pt.post_text
	FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt, " . USERS_TABLE . " u
	WHERE p.topic_id = 6311
		AND p.post_id = pt.post_id
		AND u.user_id = p.poster_id
	ORDER BY p.post_time ASC
	LIMIT $start_post,20";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, "Could not obtain information.", '', __LINE__, __FILE__, $sql);
}
post_time ist vom Typ int(11).

Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Ähm, warum machst du denn nicht den Rest mit PHP?

Code: Alles auswählen

for ($i = 20; $i > 0; $i--)
{

}
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Schleife rückwärts.. was es alles gibt :D

Gleich mal ausprobieren. Danke!

EDIT:
Eigentlich fällt mir gerade ein, dass ich das Array auch einfach umdrehen könnte mit array_reverse() oder nicht?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“