[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= 
 
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
Zobacz wiadomo¶ci
 
Cytat
A gdyby tak siê wedrzeæ na umys³ów górê, / Gdyby stan±æ na ludzkich my¶li piramidzie, / I przebiæ czo³em przes±dów chmurê, / I byæ najwy¿sz± my¶l± wcielon±. . . Juliusz S³owacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=



sawic - 14-12-2006 16:09
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
  Witam.

Mam tak? tabel?:

user (char (20)) | wartosc (int (5))
------------------------------------
user1 | 25
user2 | 13
user3 | 233
user4 | 24
user5 | 232

Czytam: "select user from db.table order by wartosc desc" i user1
zostaje zczytany jako trzeci w kolejno?ci.

Czy jest mo?liwo?? wykonania zapytania które w zapisie dos?ownym
wygl?da?o by:
[czytaj który b?dzie user1 gdybym czyta? tabel? w kolejno?ci (order by
wartosc desc)]
I ?eby wynikiem tego zapytania by?o 3.

Mo?e jest jaka? komenda na kszta?t SQL_CALC_ROWS aby bez kombinowania
odpyta? baze w powy?szym celu ?

Pozdrawiam





=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 14-12-2006 16:09

  sawic napisa??(a):
> Witam.
>
> Mam takÄ? tabelÄ?:
>
> user (char (20)) | wartosc (int (5))
> ------------------------------------
> user1 | 25
> user2 | 13
> user3 | 233
> user4 | 24
> user5 | 232
>
> Czytam: "select user from db.table order by wartosc desc" i user1
> zostaje zczytany jako trzeci w kolejno??ci.
>
> Czy jest mo??liwo??Ä? wykonania zapytania kt??re w zapisie dos??ownym
> wyglÄ?da??o by:
> [czytaj kt??ry bÄ?dzie user1 gdybym czyta?? tabelÄ? w kolejno??ci (order by
> wartosc desc)]

count ?

select user, ( select count(*) from db.table t2 where t2.wartosc >= t1.wartosc )
as pozycja from db.table t1

> I ??eby wynikiem tego zapytania by??o 3.
>
> Mo??e jest jaka?? komenda na kszta??t SQL_CALC_ROWS aby bez kombinowania
> odpytaÄ? baze w powy??szym celu ?
>
> Pozdrawiam




sawic - 14-12-2006 16:09

  Filip Rembia??kowski napisa??(a):
> count ?
>
> select user, ( select count(*) from db.table t2 where t2.wartosc >= t1.wartosc )
> as pozycja from db.table t1

Dzia??a.
Sam jako?? nie mog??em na to wpa??Ä?.

Pozdrawiam




Artur - 14-12-2006 16:09
=?iso-8859-2?q?Re:_Wy=B6wietlenie_kolejnej_pozycji,_jak=B1_mi a=B3by_dany_rekord,_gdybym_czyta=B3_wg_ko?=
  > > select user, ( select count(*) from db.table t2 where t2.wartosc >= t1.wartosc )
> > as pozycja from db.table t1
>
> Dzia?a.
> Sam jako? nie mog?em na to wpa??.

Zapytanie z count(*) niestety mo?e nie dzia?a? wydajnie, poniewa?
dla ka?dego rekordu wynikowego niestety trzeba b?dzie wykona?
zliczanie. Koszt takiego zapytania b?dzie przyrasta? wyk?adniczo,
wraz ze wzrostem liczby rekordów. Za??czy?em inn? wersj?
zapytania, które jest du?o wydajniejsze.

Wersja 1 -- du?y koszt
------------------
select uzytk,
(select count(*) from tab1 t2 where t2.wartosc >= t1.wartosc) as
pozycja
from tab1 t1 ;

Wersja 2 -- ma?y koszt
------------------
select uzytk, row_number() over( order by wartosc desc) as pozycja from
tab1;

-- Artur Wro?ski

[PS. testy wykona?em na DB2 dla 100 ty?. rekordów]





sawic - 14-12-2006 16:09

  Artur napisa?(a):
> Wersja 2 -- ma?y koszt
> ------------------
> select uzytk, row_number() over( order by wartosc desc) as pozycja from
> tab1;

Nie mog?em tego zmusi? do dzia?ania.
Nie mog? te? znale?? dokumentacji dla tego zapytania dla MySQL.
Czy row_number() over() nie jest aby tylko dla Oracle ?

Pozdrawiam




Artur - 14-12-2006 16:10
=?iso-8859-2?q?Re:_Wy=B6wietlenie_kolejnej_pozycji,_jak=B1_mi a=B3by_dany_rekord,_gdybym_czyta=B3_wg?=
  > > Wersja 2 -- ma?y koszt
> > ------------------
> > select uzytk, row_number() over( order by wartosc desc) as pozycja from
> > tab1;
>
> Nie mog?em tego zmusi? do dzia?ania.
> Nie mog? te? znale?? dokumentacji dla tego zapytania dla MySQL.
> Czy row_number() over() nie jest aby tylko dla Oracle ?
>
> Pozdrawiam

Widocznie MySQL tej konstrukcji nie wspiera :-(

row_number() over() jest standardem w DB2, Oracle i MS SQL.

Mo?esz zastanowi? si? nad wykorzystaniem bezp?atnych edycji tych
baz. Wszystkie mog? by? stosowane komercyjnie. DB2 nie ma ogranicze?
co do rozmiaru bazy, pozosta?e ograniczaj? do max. 4 GB danych.

Krótkie porównanie bezp?atnych baz mo?esz znale?? np. pod
adresem:

http://www.manifold.net/doc/7x/datab...tallations.htm

Pozdrawiam,
-- Artur Wro?ski




sawic - 14-12-2006 16:10

  Artur napisa?(a):
> Mo?esz zastanowi? si? nad wykorzystaniem bezp?atnych edycji tych
> baz. Wszystkie mog? by? stosowane komercyjnie. DB2 nie ma ogranicze?
> co do rozmiaru bazy, pozosta?e ograniczaj? do max. 4 GB danych.
>
> Krótkie porównanie bezp?atnych baz mo?esz znale?? np. pod
> adresem:
>
> http://www.manifold.net/doc/7x/datab...tallations.htm

Wszystko ?adnie i pi?knie, ale mam komercyjny hosting w nazwa.pl
Tam jedynie MySQL lub PostregeSQL.
To ju? wol? MySQL.

Posdrawiam




Artur - 14-12-2006 16:10
=?iso-8859-2?q?Re:_Wy=B6wietlenie_kolejnej_pozycji,_jak=B1_mi a=B3by_dany_rekord,_gdybym_czyta=B3_wg?=
  > Wszystko ?adnie i pi?knie, ale mam komercyjny hosting w nazwa.pl
> Tam jedynie MySQL lub PostregeSQL.
> To ju? wol? MySQL.

Rozumiem, ?e nazwa.pl daje Ci do wyboru tylko MySQL lub PostgreSQL i
to jest rzeczywi?cie ograniczenie.

To ?e jest komercyjny, nie ma znaczenia.

Powodzenia,
-- Artur Wro?ski




Maciek Dobrzanski - 14-12-2006 16:10

  "sawic" <sawicc@wytnij.to.gmail.com> wrote in message
news:ela4ra$3p8$1@news.onet.pl...

> Czy jest mo?liwo?? wykonania zapytania które w zapisie dos?ownym wygl?da?o
> by:
> [czytaj który b?dzie user1 gdybym czyta? tabel? w kolejno?ci (order by
> wartosc desc)]
> I ?eby wynikiem tego zapytania by?o 3.

Wyci?gni?cie ca?ej listy najwydajniej b?dzie wykona? poprostu sortuj?c
warto?ci, z uwzgl?dnieniem konieczno?ci za?o?enia indeksu na par? (wartosc,
user). Czyli:

SET @pozycja := 0;
SELECT t.user, @pozycja := @pozycja + 1 AS pozycja FROM tabela t ORDER BY
t.wartosc DESC;

Natomiast w przypadku wyci?gania informacji o pozycji pojedynczego(!)
u?ytkownika to oczywi?cie podany ju? wcze?niej przyk?ad wydaje si? by?
dobry:

SELECT t1.user, (SELECT COUNT(1) FROM tabela t2 WHERE t2.wartosc >=
t1.wartosc) AS pozycja FROM tabela t1 WHERE t1.user = 'user1';

Maciek

Maciek




sawic - 14-12-2006 16:10

  Maciek Dobrzanski napisa?(a):
> Wyci?gni?cie ca?ej listy najwydajniej b?dzie wykona? poprostu sortuj?c
> warto?ci, z uwzgl?dnieniem konieczno?ci za?o?enia indeksu na par? (wartosc,
> user). Czyli:
>
> SET @pozycja := 0;
> SELECT t.user, @pozycja := @pozycja + 1 AS pozycja FROM tabela t ORDER BY
> t.wartosc DESC;

Jak wyci?gam wszystko to po prostu w php incrementuje sobie zmienn?.

> Natomiast w przypadku wyci?gania informacji o pozycji pojedynczego(!)
> u?ytkownika to oczywi?cie podany ju? wcze?niej przyk?ad wydaje si? by?
> dobry:
>
> SELECT t1.user, (SELECT COUNT(1) FROM tabela t2 WHERE t2.wartosc >=
> t1.wartosc) AS pozycja FROM tabela t1 WHERE t1.user = 'user1';

Ok. To ju? dalej nie kombinuj?.
Wa?ne, ?e dzia?a.

Dzi?ki.
Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Gdzie MySQL 4.1, a gdzie 5.0? [MS SQL] "set names" (mySQL) w MS SQL oracle -> oracle lub oracle -> mysql replikacja - programy [mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu. [MySQL] Zwrot tego, co pasuje i nie pasuje :-/ [pgsql] Dostosowanie sk³adni MySQL 5.0 -> PGSQL 8.1 [mysql] galeria zdjec - numerowanie zdjec [MySQL] Zapytanie z pliku , wynik do pliku [mysql] CONCAT agreguj±cy, ale nie GROUP_CONCAT() mysql data 0000-00-00 na koniec
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.pl
  • Cytat

    Decede mihi sole - nie zas³aniaj mi s³onca.
    Gdy kogo¶ kochasz, jeste¶ jak stworzyciel ¶wiata - na cokolwiek spojrzysz, nabiera to kszta³tu, wype³nia siê barw±, ¶wiat³em. Powietrze przytula siê do ciebie, choæby by³ mróz, a ty masz w sobie tyle rado¶ci, ¿e musisz j± rozdawaæ woko³o, bo siê w tobie nie mie¶ci
    Hoc fac - tak czyñ.
    A tergo - od ty³u; z ty³u.
    I czarne w³osy posiwiej±. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com