Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie rekordów do momentu tego konkretnego
Forum PHP.pl > Forum > Bazy danych > MySQL
Snoopy
Witam.
Chciałbym się dowiedzieć jak powinno wyglądać zapytanie zliczające ilość wszystkich rekordów w tabeli uszeregowanych dajmy na to według ID do momentu kiedy ostatnim rekordem będzie taki w którym pole 'poleX' ma zadaną wartość.

Dla przykładu:

  1. ID | poleX
  2. 1 | nazwa
  3. 2 | nazwa1
  4. 3 | nazwa2
  5. 4 | nazwa3
  6. 5 | nazwa4
  7. 6 | nazwa5
  8. 7 | nazwa6
  9.  
  10. Zlicz ilość rekordów do rekordu gdzie poleX = nazwa4
  11. więc powinno pokazać że ilość rekordów = 5
  12. oczywiście 5 nie jest wartością pola ID tylko ilością rekordów
prond
Tak na brzydko możesz to zrobić w ten sposób :

  1. SET @condition := 1;
  2.  
  3. CREATE TEMPORARY TABLE tt AS SELECT
  4. CASE WHEN poleX = 'nazwa4' THEN @condition := 0 ELSE NULL END AS temp,
  5. @condition AS cnt
  6. FROM tabela ORDER BY id ASC;
  7.  
  8. SELECT SUM(cnt) FROM tt;


Jednak to kompletna partyzantka, jak chcesz to zrobić porządnie to wykorzystaj kursory.
Snoopy
łooo, chwilunia... jakie kursory? Możesz mnie chociaż naprowadzić na jakieś bliższe info? Nie jestem biegły w MySQL'u
prond
Trochę zamieszałem w poprzednim poście winksmiley.jpg

Pewnie wystarczy coś takiego
  1. SET @rownum :=0;
  2.  
  3. SELECT
  4. rownum
  5. FROM ( SELECT
  6. @rownum := @rownum +1 AS rownum,
  7. poleX FROM tabela ORDER BY id ) t1
  8. WHERE t1.poleX = 'nazwa4' LIMIT 1;


Edit: Dodałem LIMIT 1
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.