Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF][Zend db_select]Ranking rekordów
Janusz1200
post 29.03.2012, 14:39:43
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 6
Dołączył: 19.12.2010
Skąd: Krzyżanowice

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


Witam, wie ktoś może, jak napisać coś takiego w Zendzie:

SELECT @pos:=@pos+1, id, table_pkt FROM `user`, (select @pos:=0) p WHERE league_id=2 order by points desc

(chodzi o dodatkową kolumnę, która numeruje rekordy)

Próbowałem z joinCross:
$select->joinCross('(select @pos:=0) p');

ale coś nie idzie....


Pozdrawiam

Janusz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post 30.03.2012, 08:58:47
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A jak byś chciał?
  1. $select = $this->select();
  2. $select->from($this->_name,array($this->_name.'.*','test'=>new Zend_Db_Expr('now()')));


Zamiast "now()" wstaw to, co potrzebujesz, czyli te zmienne.
Go to the top of the page
+Quote Post
Janusz1200
post 30.03.2012, 11:23:18
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 6
Dołączył: 19.12.2010
Skąd: Krzyżanowice

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


Cytat(Pilsener @ 30.03.2012, 09:58:47 ) *
A jak byś chciał?
  1. $select = $this->select();
  2. $select->from($this->_name,array($this->_name.'.*','test'=>new Zend_Db_Expr('now()')));


Zamiast "now()" wstaw to, co potrzebujesz, czyli te zmienne.

Dzięki. Faktycznie w tym, co napisałeś, jest dodawanie nowej kolumny ( @pos:=@pos+1 ), jak w podanym przez Vikinga przykładzie. Chodzi teraz o zainicjowanie zmiennej @pos zerem. Można to zrobić w dwóch zapytaniach,
jak w podanym przez Vikinga przykładzie, ale to budzi moje obawy, można próbować w jednym zapytaniu.
I właśnie problem leży w tym, że żeby w jednym zapytaniu ustawić wartość początkową zmiennej @pos
na 0, trzeba dać from (jak dodatkowa tabela), w sql to wygląda tak:

FROM section_user, (select @pos:=0) p

natomiast w Zend, żeby to grało, to trzeba tę tabelę dostawić jakoś, może tak:

$select->joinCross('(select @pos:=0) p');

ale to nie idzie. Faktycznie, może w tym joinCross trzeba by użyć Zend_Db_Expr,
może spróbuję.
Go to the top of the page
+Quote Post

Posty w temacie


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.06.2025 - 03:22