Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mssql+php] Poprawne zapytanie sql + pytania, aktualna wartość + formatowanie
roome
post 19.10.2011, 09:56:23
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 21.09.2011

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


Witam,
Pracuje nad następującym tematem :


Jest baza mssql w której jest min tabela okreslająca aktualne statusy użytkownikow wraz z czasem. Praktycznie nowe wpisy wpadają co minutę.
Chciałbym przy pomocy php zrobić taką dynamicznie aktualizującą się liste userow uwzględaniając aktualne statusy - napewno nastąpia jakies opoznienia ale to jest akceptowalne.
Gdy np user ma wartosc pauza zapytanie wyciaga ta wartosc (w tym wypadku pauza to wartość 3) i aktualizuje wyswietlany status np. zmieniajac kolor na zółto.

Problemy :

1. Zapytanie sql które wyciągnie mi aktualny status dla danego użytkownika w tej chwili (chwila uruchomienia zapytania) :

  1. SELECT dz.Time, u.UserFirstName, u.UserID, dz.UserActionId FROM TUserActionLog AS dz, TUser AS u
  2. WHERE u.UserID=16 AND DATEDIFF(MINUTE, GETDATE(), dz.Time) = 0
  3. ORDER BY dz.Time DESC


Zrobiłem takie jednak nie zdaje egazminu ponieważ w danej minucie może wystapić kilka zmian statusów dla danego usera (stany posrednie).

np:
Time UserFirstName UserID UserActionId
2011-10-19 10:31:42.017 Adam 12 3
2011-10-19 10:31:42.017 Adam 12 6
2011-10-19 10:31:39.233 Adam 12 7
2011-10-19 10:31:39.233 Adam 12 2

Jak wyciagnac jedynie najnowszy-najaktualniejszy wpis (UserActionId=3) - jeden wynik ?

2. Jak dalej to pociągnąć. W grę wchodzi php. Muszę dla każdego usera w danej chwili wyciagac zapytaniem status a nastepnie if'ami odpowiednio formatowac tekst w zaleznosci od zwroconego wyniku ?

Na ta chwilę mam połaczenie msql - php :

  1.  
  2. <?php
  3.  
  4.  
  5. $connect = odbc_connect("xxx", "xxx", "xxx");
  6.  
  7. # zapytanie
  8. $query = "select dz.Time, u.UserFirstName, u.UserID, dz.UserActionId from TUserActionLog as dz, TUser as u
  9. where u.UserID=16 and DATEDIFF(MINUTE, GETDATE(), dz.Time) = 0
  10. order by dz.Time DESC";
  11.  
  12.  
  13. # wykonanie_zapytania
  14. $result = odbc_exec($connect, $query);
  15.  
  16. # wyświetlenie wynikow
  17. while(odbc_fetch_row($result)) {
  18. $field1 = odbc_result($result, 1);
  19. $field2 = odbc_result($result, 2);
  20. $field3 = odbc_result($result, 3);
  21. $field4 = odbc_result($result, 4);
  22. $field5 = odbc_result($result, 5);
  23. print("$field1 $field2 $field3 $field4 $field5<br />");
  24. }
  25.  
  26.  
  27.  
  28. # koniec polaczenia
  29. odbc_close($connect);
  30.  
  31. ?>
  32.  


3. Synchronizacja, aktualizacja wyników, opóźnienia.

W tym przypadku branych pod uwage bedzie ok 30 userow i ich statusy (jest ich ok 10 pozycji).
Pytanie jak to wszystko zopytmalizować żeby w miarę sprawnie działało ?


Dziękuje za pomoc i wskazówki - tymczasem walcze dalej wink.gif

Adam

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: 28.03.2024 - 14:38