Puslapiai: [1] 2 3 4 5 ... 10
 1 
 : Šiandien 12:23:42  
Pradėta FromMars - Paskutinė žinutė nuo vitalikaz
Viskas logiška. Tu skaičiuoji tiesiog kiek yra žmonių su mažesniu taškų skaičiumi.
Bendrai tai...

Hm, jeigu tau reikia būtent pagal tokią logiką skaičiuot ir nėra kito būdo, tai manyčiau, kad taip pat reikia suskaičiuot žmonių su vienodu tašku skaičiumi ir tą žmonių skaičių pridėt, atimus iš viso besikartojančių skaičių. Pvz.:

Vardas / Taškai
Pirmas 5
Antras 28
Trecias 28
Ketvirtas 9
Penktas 35
Sestas 14

Visus išrikevę gauname:
1. Pirmas
2. Ketvirtas
3. Sestas
4. Antras
5. Trecias
6. Penktas

Norime gauti pvz 'Penktas' rank'ą. Pagal tavo užklausą gautume 5, nors iš tikrųjų jis yra 6. Pataisymas būtų:
Gauname žmones, kurių taškų skaičius yra vienodas, bet mažesnis negu mum reikiamo žmogaus (šiuo atveju 'Penktas').

SELECT COUNT(*)  AS kartojasi
  FROM people
 WHERE taskai IN (SELECT DISTINCT taskai FROM people AS A, people AS B WHERE A.taskai = B.taskai)

Gauname kiek zmoniu turi besikartojantį taškų skaičių:

SELECT COUNT(*) AS zm1 FROM people AS A, people AS B WHERE a.taskai = B.taskai

Dabar prie skaičiaus, gauto pagal tavo algoritmą reik pridėti `kartojasi` ir atimti `zm1`, jeigu aišku teisingai čia parašiau. Netikrinau, tai gal kokių klaidų pridariau. Jeigu nesigauna sujungti užklausas į vieną, tai visada galima duomenis gaut per kelias. Pagavai pačią idėją?

P.S. Tik idomu kas bus, kai bandysi paimti ranką būtent to žmogaus, kurio taškų skaičius kartojasi su kuo nors dar. Čia reikia viską labai smulkiai apmąstyt, jeigu nori bug'ų nepalikt. Kaip minimum, dar tavo tą griežtą nelygybę reik pakeist į >=. Šiaip pagalvok gal yra koks kitas būdas tą apskaičiuot :) Gal kokios `rank` lentelės sudarymas tau padėtų. Arba taškus skaičiuok tūkstančiais. 1k, 2k, 3k.. Ir pvz jei žmogus gauna 1k taškų, ir tas taškų skaičius jau yra pas kažką kitą, tai pridėk jam ne 1000, o 1001 tašką (o jei turi ir +1001, tai pridėk 1002 ir t.t. :) ), o rodydamas taškus vartotojui imk tik tūkstantinę dalį (kiek tūkstančių). Vienu žodžiu apgalvok alternatyvius variantus :)

 2 
 : Vakar at 09:09:31  
Pradėta arialas - Paskutinė žinutė nuo Haris
O! Va sitas naudingas daiktas , o kad padarytum naudodamas JQuery biblioteka, tai isvis butu saunu!

Ir pradek naudot JQuery!!! ;)

 3 
 : Vakar at 07:55:54  
Pradėta FromMars - Paskutinė žinutė nuo Haris
Ka tu butent nori padaryti , kaip tas visas reikalas vadinasi. kokios statistikos ar kas? sunku isivaizduot kazkaip  ;D

 4 
 : Vakar at 07:52:17  
Pradėta FromMars - Paskutinė žinutė nuo FromMars
Na jo būtų neblogai jei būtų taip kaip tu pasakei
"tas kuris pirmas turejo 10 tasku , tai jis ir  bus pirmas o antrasis kuris turi 10 tasku bus antras , nes jis surinko 10 tasku  veliau nei 1-as."
bet deja taip nėra, ir nežinau kaip patobulinti tą užklausą, ar dar čia ką padaryti, žodžiu ... lauksiu tada primato, gal atsakys.

 5 
 : Vakar at 07:49:16  
Pradėta FromMars - Paskutinė žinutė nuo Haris
naaaa... ,tas kuris pirmas turejo 10 tasku , tai jis ir  bus pirmas o antrasis kuris turi 10 tasku bus antras , nes jis surinko 10 tasku  veliau nei 1-as.

Sudetingai geriau negalvok.

Nu nzn tada, Primatas gal zinos , arba as durnas , nesuprantu ko nooori ;D ;D

 6 
 : Vakar at 07:41:36  
Pradėta FromMars - Paskutinė žinutė nuo FromMars
Jėzau Marija, Juozapai švenčiausias aš juk aiškinu, kad man ne to reikia, tokią užklausą tikrai būčiau sugalvęs.

Pasižiūrėk į pirmą post'a ten užklausa parašyta kuri skaičiuoja žmogaus vietą, bet problema iškyla tada kai nevienas žmogus turi tiek pat taškų.

 7 
 : Vakar at 07:37:55  
Pradėta FromMars - Paskutinė žinutė nuo Haris
aaa... tai tada tau reikia limituoti uzklausos rezultatus bus taip:
SELECT * FROM `users` ORDER BY `taskai` DESC LIMIT 1

mySQL pagrindai.... ;D

 8 
 : Vakar at 07:35:57  
Pradėta FromMars - Paskutinė žinutė nuo FromMars
Ne to man reikia, man reikia pačios vietos, to skaičiaus, beje šitoje užklausoje kur pateikei rodys visus esamus žmones, o man kaip jau sakiau reikia tik vieno žmogaus.

pvz.: žmogus turi 10 taškų, tada reikia apskaičiuoti to žmogaus vietą pagal kitų žmonių esančių duom. bazėje taškus, ir parodyti kurioje jis vietoje.
Tai padaryti aš moku, bet jei kaip jau ir sakiau, keli žmonės turi po lygiai taškų juos rodys vienoje vietoje, nesvarbu kurio žmogaus vietą pasižėsi.

 9 
 : Vakar at 07:30:29  
Pradėta FromMars - Paskutinė žinutė nuo Haris
<?php
$qr 
mysql_query("SELECT * FROM `users` ORDER BY `taskai` DESC");
while(
$t mysql_fetch_array($qr))
{
echo
"
<ul>
<li type='1'>
"
.$t['Vardas']."
</li>
</ul>
"
;
}
?>


Manau veiks :)

EDIT: oi! Pamirsau ?> ;D

 10 
 : Vakar at 07:25:36  
Pradėta FromMars - Paskutinė žinutė nuo FromMars
Tuos Jonus, Kazius ir t.t pateikiau kaip pavizdį, man reikia tik vieno žmogaus vietos kai duom. bazėje yra daug žmonių, su įvairiais taškų kiekiais.

Tarkim yra lentutė :

Vardas | Taškai
Jonas | 1
Petras | 2
Kazys | 1

Taigi man tada prie Jono ir Kazio rodys 1 vietą, o prie Petro 2. O aš noriu, kad man prie pvz.: Jono rodytų 1 vietą, prie Kazio 2, o prie Petro 3 ir t.t.
Daryčiau su ORDER BY bet man jis neduoda jokios naudos, todėl nesuprantu kaip čia padaryti, kankinuos jau nevieną dieną.

p.s Kaip žvaigždžių duete netinka, tiesiog reikia kažkaip apskaičiuoti būtent kažkurio žmogaus vietą pagal jo turimus taškus ir rikiuoti jį su ORDER BY vardas DESC pvz, bet man jis neveikia ...

Puslapiai: [1] 2 3 4 5 ... 10
Hey.lt - Nemokamas lankytojų skaitliukas