Problem bei MySQL Abfrage

Hallo zusammen,

auf meiner Startseite soll immer der Forenthread angezeigt werden, der die höchste ID hat. Bis jetzt hat das so funktioniert:

$sql = ‚SELECT ID, Titel FROM blog WHERE ID=(SELECT MAX(ID) FROM blog)‘;

Das funktioniert auch super. Nun kann ich jedoch Blogs bzw. Threads löschen. Diese fliegen dabei nicht aus der Datenbank, sondern es wird in die Spalte „geloescht“ eine 1 geschrieben anstatt einer 0. Es werden nur die Threads angezeigt, die eine 0 unter „geloescht“ stehen haben. Wenn nun ein Thread gelöscht wurde, wird aber dieser immer noch auf der Startseite angezeigt. Also dachte ich, dass ich einfach meine Abfrage modifizere:

$sql = ‚SELECT ID, Titel FROM blog WHERE ID=(SELECT MAX(ID) FROM blog) WHERE geloescht = 0‘;

Das funktioniert jedoch nicht, weil der Thread mit der höchsten ID nunmal nicht mehr eine 0 unter geloescht stehen hat. Deswegen wird gar nichts aus der Datenbank ausgelesen. Es müsste also jetzt der Thread ausgelesen werden, der die höchste ID hat unter den geloscht = 0.

Wie mache ich das? Ich hoffe, dass ihr mein Anliegen versteht :slight_smile:

Vielen Dank
lg, freakXHTML

Du musst natürlich die Bedingung in die Abfrage einbauen, wo du die IDs ermittelst, nicht erst hinterher. Wobei, so wie du es beschriebst, mir der subselect überflüssig erscheint.

Sowas in der Art müßte doch funktionieren:

SELECT ID, Titel FROM blog WHERE geloescht = 0 ORDER BY id LIMIT 1

EDIT: Beim ORDER BY musst du evtl. noch ein DESC einbauen