[mysql] positie

Pagina: 1
Acties:

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik heb een database gevuld met oa een naam en een score. Nu wil ik een lijstje maken met die mensen met hun score, dat doe ik zou:

SELECT * FROM stats where gister>"0" order by gister DESC, tot_nu DESC;

Nu krijg ik een mooi lijstje met de namen en hun scores van de mensen die gister een score hebben gehaald. Maar nu wil ik deze personen een positie toekennen. Dat de persoon die boven aan staat in mijn query 1 krijg en de tweede een 2 etc.

Hoe doe ik dat?

...


Verwijderd

onzin sorry :/

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
lol

...


Verwijderd

Ik snap je vraag denk ik :)
PHP:
1
<?while($data=mysql_fetch_object($sql)){  $id++;   echo($id." Naam: ".$data->naam);}?>

Zoiets bedoel je?

Of anders kan je ook in een array proppen voor een wat profi manier...

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ja dat is precies wat ik bedoel, alleen dan wil ik het niet doen in php maar in mysql zelf.

...


Verwijderd

Weer de vraag niet goed gelezen!! ;( >:) (niet zo helder meer)

Ik denk eigenlijk niet dat het kan, maar mijn SQL kennis is niet zo heel erg groot. Alleen ik vraag me af hoe je het zou kunnen toepassen? Je hebt geen "variabelen" ofzo?

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik wil de positie van verschillende mensen op verschillende dagen met elkaar vergelijken. Dat leek me veere weg het makkelijkste om te doen door de positie op te slaan in de database...

...


  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
ik denk dat een apart tabel met daarin de positie op een bepaalde dag (die lijst wordt na elke dag aangevuld met de resultaten van de vorige dag).

Tabel zou dan bv userid, score, dag, positie moeten bevatten

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Het probleem blijft dan hetzelfde. Hoe vis ik dan de positie eruit zodat ik die in een aparte tabel kan gooien?

...


  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Afbeeldingslocatie: http://tweakers.net/g/dpc/up.gif

...


  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
code:
1
SELECT count(*)+1 as pos FROM stats s1, stats s2 WHERE s2.name="Haranaka" AND s1.gister > s2.gsiter;

Deze query levert mij de gewenste informatie op. Maar dan zou ik een query voor ieder name moeten schrijven. Hoe kan ik deze qury aanpassen dat hij gewoon een lijstje geeft met een naam en de positie :?

...


Verwijderd

Alter table add id int auto_increment

:? :?

Verwijderd

volgens mij wil je de recordset die je krijgt als resultaat van je query gaan nummeren (van 1 tot x). Naar mijn beste weten kan dit niet... Waarom zou je het überhaupt eigenlijk doen :??

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Waarom ik dit wil doen:
Ik wil de positie van verschillende mensen op verschillende dagen met elkaar vergelijken.

Ik ben nu bezig met het uitwerken van hetvolgende ideee:
in php de boel ordenen en een tellertje erbij doen en dan die info weer in de database gooien. Het si een omweg maar volgens mij moet dit werken.

...


  • DukeBox
  • Registratie: April 2000
  • Niet online
Het enige dat kan is ze tijdelijk in een andere tabel op positie volgorde opslaan, en ze daar weer uit gebruiken. Het makkelijkste (en snelste) is toch nog steeds een array in php.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Bijna alles kan met SQL, dus dit ook:
code:
1
2
3
4
5
6
7
8
9
select count(s2.*)+1
    ,s1.*
from   stats s1
    ,stats s2
where  s1.tot_nu > s2.tot_nu
and    s1.gister > "0"
and    s2.gister > "0"
group by s1.*
order by 1

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 22-06 15:30
Als je veld 'gister' van het type interger is zou ik die quotes om '0' maar weghalen. Dit werkt wel maar levert wel een kleine snelheidspenalty op. En we willen natuurlijk dat het allemaal zo snel mogelijk gaat.

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Volgens Haranaka werkte het statement niet omdat MySQL blijkbaar niet tegen de count(s2.*) kan.
daarom nu volgend voorstel:
code:
1
2
3
4
5
6
7
8
9
10
11
select count(*)+1
    ,s1.veld1
    ,s1.veld2
    ,s1.veld3
from   stats s1
    ,stats s2
where  s1.tot_nu > s2.tot_nu
and    s1.gister > 0  (zonder quotes nu als veld is numeriek)
and    s2.gister > 0
group by s1.veld1, s1.veld2, s1.veld3
order by 1
Pagina: 1