Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> rank() w MySQL
prond
post 14.05.2007, 09:27:16
Post #1





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

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


Ostatnio wpadłem na ciekawy patent, który pozwala zbudować w MySQL zapytanie realizujące funkcjonalność znanej z ORACLE funkcji rank().

Osoby, które nie orientują się o co chodzi odsyłam na http://www.adp-gmbh.ch/ora/sql/analytical/rank.html

No oto magiczne zapytanie, które z tabelki zawierającej wiadomości różnych wątków systemu BOK zwróci numer wątku razem z datą pierwszej wiadomości danego typu:

  1. SET @intRownum := 0;
  2. SET @intLastTicketId := 0;
  3. SELECT
  4. ticket_id,
  5. received
  6. FROM ( SELECT
  7. ticket_id,
  8. received,
  9. CASE
  10. WHEN @intLastTicketId <> ticket_id THEN @intRownum := 1
  11. ELSE @intRownum := @intRownum + 1
  12. END AS rank,
  13. @intLastTicketId := ticket_id
  14. FROM `ebok_ticket_messages` WHERE message_type_id = 3
  15. ORDER BY ticket_id,
  16. received
  17. ) AS t
  18. WHERE t.rank = 1;


Nieźle, prawda ?


--------------------
--------------------------------------------------------------------------------
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 21:42