[mysql]count en order by tegelijk?

Pagina: 1
Acties:
  • 61 views sinds 30-01-2008

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
ik heb een probleem mensen.

ik ben bezig met farcry stats te maken dmv het uitlezen van een logfile.
nu heb ik de logfile gegevens in de database gezet op de volgende manier

tabel player, met daarin de velden
-player_id
-player_name
en nog wat zooi

en een tabel 'kills' met daarin:
-kill_id
-killer_id -- verwijzing naar player tabel
-killed_id -- verwijzing naar player tabel
-weapon_name
-map_name

nu wil ik dus in mijn playerstats (dus de stats van 1 persoon) het volgende zien:
code:
1
2
3
<playernaam> <keer gekilled> <grafiekje>
<playernaam> <keer gekilled> <grafiekje>
<playernaam> <keer gekilled> <grafiekje>

dus eigenlijk wil ik per player die ik gekilled heb een regel, met daarin hoevaak ik hem gekilled heb. Dat grafiekje lukt me wel, en het weergeven van de gegevens ook wel.
maar nu wil ik het gesorteerd hebben op aantal killes.. (en dan descending)

hoe krijg ik dat in godensnaam voor elkaar?

ik heb nu dit (ben geen mysql pro):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  $result = mysql_query("SELECT * FROM `kill` WHERE `killer_id`='$id' GROUP BY killed_id");
  while($row = mysql_fetch_array($result))
  {
    $result2 = mysql_query("SELECT COUNT(killed_id) FROM `kill` WHERE `killer_id` = '$id' AND `killed_id` = '$row[killed_id]';");
    while($row2 = mysql_fetch_array($result2))
    {
      $result3 = mysql_query("SELECT * FROM `player` WHERE `player_id`='$row[killed_id]'");
      while($row3 = mysql_fetch_array($result3))
      {
        echo "<TR><TD>$row3[player_name]</TD><TD>$row2[0]</TD></TR>";
      }
    }
  }
?>


ik ben in mijn zoektoch onder meer dit tegengekomen: http://www.webdevelopersnotes.com/tutorials/sql/20.php3
maar werd daar niet echt wijzer uit :/ omdat mijn tabellen er anders uitzien dan die van hun voorbeeld

[ Voor 10% gewijzigd door BasieP op 06-07-2004 00:38 ]

This message was sent on 100% recyclable electrons.


Verwijderd

Om te beginnen kan dit veel makkelijker..
Gebruik joins lef/right etc ect... dan kan je met 1 query informatie selecteren uit eerdere tabellen lees hier eens:

http://www.hyperlinkz.nl/artikelen/?t=49

En de fetch methode kan ook sneller ;) assoc gebruik ik zelf :)

[ Voor 1% gewijzigd door Verwijderd op 06-07-2004 00:39 . Reden: typo ]


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
Verwijderd schreef op 06 juli 2004 @ 00:39:
Om te beginnen kan dit veel makkelijker..
Gebruik joins lef/right etc ect... dan kan je met 1 query informatie selecteren uit eerdere tabellen lees hier eens:

http://www.hyperlinkz.nl/artikelen/?t=49

En de fetch methode kan ook sneller ;) assoc gebruik ik zelf :)
euh ja hoe dan?
ik gebruik 2 verschillende where dingen, hoe kan ik dan makkelijker maken?

edit: die site is ni liev, behavle dat het berg moeite kost om alle van de pagina af vallende lijnen te lezen, staat er ook niet op wat ik wil weten :(

[ Voor 15% gewijzigd door BasieP op 06-07-2004 00:47 ]

This message was sent on 100% recyclable electrons.


  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT 
    COUNT(k.kill_id) AS killed_times,
    p.*
FROM
    kill k,
    LEFT JOIN player p ON(k.killed_id=p.player_id)
GROUP BY
    k.killed_id
ORDER BY
    killed_times


zoiets?

[ Voor 4% gewijzigd door chuxiej op 06-07-2004 04:31 ]

www.dannyhiemstra.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Een combinatie van JOIN , COUNT en GROUP BY in 1 SQL stament moet je er wel uit kunnen komen. Omdat dit basiskennis SQL is, doe ik deze dicht. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.