![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Opakować w Zend_Db_Expr. Przykład http://php.r3dcode.com/files/Magento/1.6/1...lper/Mysql4.php
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 6 Dołączył: 19.12.2010 Skąd: Krzyżanowice Ostrzeżenie: (0%) ![]() ![]() |
W przykładzie, który podałeś, robią 2 query (inicjowanie zmiennej i użycie zmiennej w selekcie)
$adapter->query("SET @pos = 0 .... "); 95 96 $adapter->query($sql); 97 nie wiem, czy to jest bezpieczne w sensie transakcyjności. Ja zrobiłem w jednym select, tyle, że to jest nie tak eleganckie, jakbym chciał. $sql= "SELECT @pos:=@pos+1 position, id FROM section_user, (select @pos:=0) p WHERE league_id=? order by table_pkt desc, (table_pktwin - table_pktlost) DESC, table_w DESC, table_d DESC,table_l return $this->getAdapter()->fetchAll($sql, $leagueId); Ten post edytował Janusz1200 29.03.2012, 16:57:12 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 6 Dołączył: 19.12.2010 Skąd: Krzyżanowice Ostrzeżenie: (0%) ![]() ![]() |
A jak byś chciał?
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ę. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 05:28 |