[MySQL+PHP]Werte einer Spalte vom Tabellenende zählen

lustig

MACAN FAN^^
ID: 18670
L
25 April 2006
981
51
hi,

habe eine Datenbank mit den der Spalte "zahl1"

in dieser sind die Werte in folgender Art gespeichert.

zahl1
0
0
0
1
0
0
0
0
0

die unteren Einträge sind die neuesten.
ich möchte jetzt die Anzahl der Schritte vom Tabellenende abzählen, bis der Wert '1' kommt.
Wäre hier also der Wert = 6.

Habe das mit Count(*) probiert, aber da zählt er ja alle Werte mit '0':

Code:
$z = "SELECT COUNT(zahl1) FROM tabelle WHERE zahl1='0' ORDER BY datum DESC";
$z1 = mysql_query($z) or die (mysql_error());
$anzahl=mysql_result($z1,0);

echo  $anzahl;

Jemand eine Idee?
 
In einer Datenbank gibt es die Begriffe "oben" und "unten" nicht. Alle Tupel liegen unsortiert vor. Wünscht du eine Sortierung, musst du dies explizit mit der ORDER BY-Klausel angeben.
 
hey als kleine anregung, versuche es doch nicht unbedingt mit einer mysql abfrage zu realisieren sondern mit einer schleife

du lässt dir nacheinander die datensätze anzeigen (von oben nach unten) und

x==0;
while (zahl1)
{if (zahl1 == 0) x++; else x==0;}

x sollte dann die anzahl der nullen sein die am ende stehen
 
du lässt dir nacheinander die datensätze anzeigen (von oben nach unten) und
Nochmal zum Mitschreiben:
Datensätze können potentiell jedes Mal anders aus der Datenbank kommen.

Du brauchst eine Sortierung um die Begriffe "oben" und "unten" verwenden zu können.
 
das ganze ist deshalb problematisch, weil Du "nur" nach dem Datum sortierst. Hast Du zwei Sätze mit dem gleichen Datum, dann ist das Ergebnis erst mal nicht definiert. Für die von Dir gewählte Reihenfolge brauchst Du einen eindeutigen Schlüssel ( z.B. laufende Nummer oder Timestamp ).

Dann würde eine Abfrage wie diese hier funktionieren:

SELECT COUNT(*)
FROM tabelle
WHERE eindeutiger-schlüssel >=
( SELECT max(eindeutiger-schlüssel)
FROM tabelle
WHERE ZAHL1 = '1' )


Du suchst Dir den höchsten Wert mit Zahl1 = '1' heraus, und zählst die Zeilen, deren Schlüssel grösser ist.

Allerdings musst Du klären, was das Ergebnis sein soll, wenn es in der Tabelle bisher überhaupt keine Zeile mit Zahl1 = '1' gibt.
 
danke erstmal für die Antworten :D

@transversalis: das mit dem Datum (jedes Datum gibt es nur 1x) habe ich vergessen zu ändern, wollte eigentlich nach ID Nummern ordnen.

Habe es jetzt aber anders gelöst durch eine neue Datenbank, wo ich nur diese Werte hinzufügen, löschen und dann für meinen Gebrauch auslesen kann.

Ich wollte mir das mit meiner Frage, ob es wie oben beschrieben geht nur etwas vereinfachen.