Requete SQL avec GROUP BY probleme

Requete SQL avec GROUP BY probleme - SQL/NoSQL - Programmation

Marsh Posté le 18-09-2008 à 21:50:01    

Salut,
 
Voici ma table :
 
 

Code :
  1. CREATE TABLE IF NOT EXISTS `armory` (
  2.   `id` int(3) NOT NULL auto_increment,
  3.   `class` varchar(20) NOT NULL,
  4.   `gender` varchar(3) NOT NULL,
  5.   `level` int(2) NOT NULL,
  6.   `name` varchar(30) NOT NULL,
  7.   `race` varchar(12) NOT NULL,
  8.   `rank` int(1) NOT NULL,
  9.   `url` varchar(50) NOT NULL,
  10.   PRIMARY KEY  (`id`)
  11. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;


 
 
En fait je cherche savoir comment faire une requête qui :
 
Affiche les données de cette façon :
 
Personnages de $race (par ex: voleur)
- $name<br />
- $name...etc
 
Personnages de $race (par ex: guerrier)
- $name<br />
- $name...etc
 
 
Tout ça en une requête
 
c'est possible ?
 
merci


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 18-09-2008 à 21:50:01   

Reply

Marsh Posté le 19-09-2008 à 13:22:21    

Le problème n'est pas assez clairement exposé pour répondre avec certitude, mais il me semble qu'un ORDER BY serait suffisant. Peut-être que je me trompe et qu'il faudrait faire un GROUP BY. Quoi qu'il en soit, ce ne devrait pas être très compliqué de faire quelques tests de requêtes.

Reply

Marsh Posté le 19-09-2008 à 22:10:46    

Select * from armory
where (name = $name1 and race = $race1) or (name = $name2 and race = $race2)
 
un truc de ce style ?

Reply

Marsh Posté le 20-09-2008 à 12:07:36    

Code :
  1. SELECT race, name
  2. FROM armory
  3. ORDER BY race, name


 
Ensuite, pour la présentation, c'est au niveau du logiciel client (un site php j'imagine) de gérer la rupture sur les changements de race.
 
algo :
 


ancienne_race = ""
pour chaque ligne de ma requête
  si requête["race"] != ancienne_race alors
    ancienne_race = requête["race"]
    afficher "Personnage de la race " + ancienne_race
  fin si
  afficher "name " + requête["name"]
fin pour


Message édité par MagicBuzz le 20-09-2008 à 12:07:51
Reply

Marsh Posté le 21-09-2008 à 03:25:42    

Voici mon code que je répète 8 fois pour chaque classe (8 classes donc :p) :
 

Code :
  1. <?php
  2. echo "\t\t\t\t".'<div class="chaman"><img src="./img/puce.jpg" alt="" /> Chaman</div>';
  3. echo $tab;
  4. $q = mysql_query('SELECT * FROM armory WHERE class = "Chaman" ORDER BY name');
  5. while($r = mysql_fetch_array($q))
  6. {
  7. $q_item = mysql_query('SELECT id_item FROM armory_items WHERE name = "'.$r['name'].'" ORDER BY id DESC LIMIT 0, 1');
  8. $r_item = mysql_fetch_array($q_item);
  9. $green = $armory->itemFetch($r_item['id_item']);
  10. $name_item = $green['itemtooltips']['itemtooltip']['name'];
  11. $overallqualityid = $green['itemtooltips']['itemtooltip']['overallqualityid'];
  12. echo sql2tab($r['class'], $r['classid'], $r['gender'], $r['genderid'], $r['level'], $r['name'], $r['race'], $r['raceid'], $r['rank'], $r['url'], $r['lastmodified'], $r['talentspec'], $r_item['id_item'], $name_item, $overallqualityid);
  13. }
  14. echo $tab2;
  15. ?>


 
Je n'ai pas très bien compris ton algo :x


Message édité par Orission le 21-09-2008 à 03:27:21

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed