14-12-2008, 03:16 PM
Là n'est pas la question.
Le problème, c'est plutôt que le serveur n'arrive pas à gérer toutes ces requêtes : soit le serveur est trop faible, soit les requêtes ne sont pas optimisées. Ici, je pense qu'on est dans le cas des requêtes qui ne sont pas optimisée.
Ce que tu pourrais faire, c'est donc une jointure sur les coordonnées dans ce genre :
Le problème, c'est plutôt que le serveur n'arrive pas à gérer toutes ces requêtes : soit le serveur est trop faible, soit les requêtes ne sont pas optimisées. Ici, je pense qu'on est dans le cas des requêtes qui ne sont pas optimisée.
Ce que tu pourrais faire, c'est donc une jointure sur les coordonnées dans ce genre :
Code PHP :
<?php
SELECT cases.*,
coffres.nom AS coffre_nom, # Tu spécifies
coffres.x AS coffre_x, # les champs utiles
coffres.y AS coffres_y, # un par un et tu
clans.nom AS clan_nom, # leurs donne un
clans.x AS clan_x, # alias pour éviter
clans.y AS clan_y, # les collisions de nom.
personnages.id AS personnage_id
personnages.nom AS personnage_nom
FROM cases
LEFT JOIN coffres
ON coffres.x = cases.x
AND coffres.y = cases.y
LEFT JOIN clans
ON clans.x = cases.x
AND clans.y = cases.y
# Autres jointures…
LEFT JOIN personnages
ON personnages.x = cases.x
AND personnages.y = cases.y
WHERE cases.x BETWEEN x_min AND x_max
AND cases.y BETWEEN y_min AND y_max
Si dans ton système il ne peut y avoir qu'une seule chose par case, tant mieux, sinon il faudra gérer ça du côté de PHP puisqu'avec cette requête, si une case contient 1 personnage et 1 coffre, il y aura 2 lignes pour cette case : ce qui risque de bordeliser ton tableau.
Voilà une piste, à toi d'y travailler et de poser tes questions.
Sephi-Chan