Struppi: korrelierte Subselects - ein kleiner Ausblick

Beitrag lesen

Ich habe eine Datenbank mit Tabellen die etwa so sind. A hat mehrere Status. Es soll immer der neuste Angezeigt werden. Nur DER neuste (Also einer). Wenn jetzt aber einer der Status eine Information ist, soll nicht dieser neuste, sondern der Zweitneuste (Halt einfach der, der keine Information ist) angezeigt werden.

Du meinst sowas?
SELECT * FROM A WHERE status != 'information' ORDER BY datum DESC LIMIT 1

diese Anweisung setzt voraus, dass die Ergebnismenge aus genau einem Datensatz bestehen soll und dazu die Werte in der Spalte datum eindeutig sein müssen. Im Falle der Nichteindeutigkeit könntest Du ja zwei Datensätze mit dem gleichen Datumswert haben und somit durch Deine LIMIT-Klausel ein richtiges Ergebnis verwerfen. Darauf hat übrigens Ilja in diesem Thread bereits hingewiesen.

Jaja, ich wollte nur meinen Senf dazu geben, weil die Fragestellung so konfus war und der OP auch keine Anstalten gemacht, sein Problem zu konkretisieren.

Zumal die Fragestellung suggeriert, dass er offensichtlich mehrere Felder 'status' hat ("mehrere Status").

Meine Hoffnung war, dass der OP nach meinem mißglückten Beispiel evtl. mehr Informationen preisgibt.

Meine Erfahrung hier im Forum zu Mengen von PHP-Code gemischt mit einigen SQL-Statements ist übrigens die, dass mit PHP versucht wird, Funktionalität nachzubauen, die in einem Datenbankmanagementsystem bereits vorhanden ist. Allerdings muss dies, wenn man keine einzige Zeile Code gesehen hat, im konkreten Einzelfall noch lange nicht so sein. Ich gebe jedoch gerne zu, dass ich dies im Falle des OP durchaus befürchte.

nicht ausgeschlossen.

Struppi.

--
Javascript ist toll (Perl auch!)