Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zliczanie rekordów do momentu tego konkretnego
Snoopy
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
prond
post
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
Snoopy
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


łooo, chwilunia... jakie kursory? Możesz mnie chociaż naprowadzić na jakieś bliższe info? Nie jestem biegły w MySQL'u
Go to the top of the page
+Quote Post
prond
post
Post #4





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował prond 9.05.2007, 15:36:53


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:32