Bonjour,

Je cherche a créer la requête la plus efficace possible pour le système suivant.

C'est une carte de 20x20 où l'on peut déplacer des groupes (ici repris sous le nom de "mouvement" dans la BDD) (une armée par exemple), plusieurs groupes peuvent se retrouver sur la même case.

La requête actuelle ne me permet d'afficher qu'un "mouvement" sur la case.

Voici les tables :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE IF NOT EXISTS `guerres_carte` (
  `id_case` int(9) unsigned NOT NULL,
  `x` smallint(2) unsigned NOT NULL,
  `y` smallint(2) unsigned NOT NULL,
  `carte` mediumint(7) unsigned NOT NULL,
  `type` tinyint(1) unsigned NOT NULL,
  KEY `x` (`x`,`y`,`carte`),
  KEY `id_case` (`id_case`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `guerres_mouvements` (
  `id_mouvement` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `union_mouvement` smallint(5) unsigned NOT NULL,
  `type` tinyint(1) unsigned NOT NULL,
  `mouvement` text NOT NULL,
  `case_mouvement` int(9) unsigned NOT NULL,
  `carte` mediumint(7) unsigned NOT NULL,
  `joueur` mediumint(7) unsigned NOT NULL,
  `temps_fin` int(11) unsigned NOT NULL,
  `destination` int(9) unsigned NOT NULL,
  PRIMARY KEY (`id_mouvement`),
  KEY `union_mouvement` (`union_mouvement`,`case_mouvement`,`carte`),
  KEY `joueur` (`joueur`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

Et le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
$selection_carte = $bdd->query('SELECT g_c.id_case,g_c.x,g_c.y,g_c.type,g_m.type AS type_mouvement, g_m.mouvement,g_m.temps_fin,g_m.destination FROM guerres_carte g_c
LEFT JOIN guerres_mouvements g_m
ON g_c.id_case=g_m.case_mouvement
AND g_m.joueur='.$id_joueur.'
WHERE g_c.carte='.$donnees_guerres['id_guerre'].' 
ORDER BY g_c.id_case ASC');
 
while($donnees_carte = $selection_carte->fetch())
{
	if($i%$donnees_guerres['x_max'] == 0 && $i > 0)
		$carte .= '</tr><tr>';
 
	$carte .= '<td class="dessous_carte">Case</a></td>';
	//S'il y a un groupe sur la case, on affiche le nom sur la case
	$i++;
}
 
?>
Merci d'avance pour votre aide