Fusionner 2 requetes sql

WRInaute impliqué
Bonjour,

Je suis actuellement en train de coder une petite map (carte) pour un jeu en ligne, mais j'ai un petit soucis. En effet dans mon code je me retrouve avec 2 requetes ( $mapquery et $elementsquery) . Mon but est d'utiliser le moins de ressouce possible. J'aimerais donc fusionner ces 2 requetes soit avec une jonction ou d'une autre mannière. Mais je ne sais vraiment pas comment faire. Voici le code :
Code:
 $mapquery = mysql_query(sprintf("SELECT id, size_x, size_y  FROM %s_map WHERE id='%d' LIMIT 1", $mysql->pref, mysql_real_escape_string($select_map)));
		$maprow = mysql_fetch_assoc($mapquery);

		$x_start = -$maprow['size_x'];
		$x_end = +$maprow['size_x'];
		$y_start = -$maprow['size_y'];
		$y_end = +$maprow['size_y'];

		$debutx = $x_start;

		while($y_end >= $y_start) {
			
			$page .='<div style="height: 32px">';
			
			while($x_start <= $x_end) {
				
				if($x_start==$playerrow['longitude'] && $y_end==$playerrow['latitude'] AND $maprow['id'] == $playerrow['map']){

				$player ='<img src="images/avatars/carte/'.$playerrow['avatar'].'.gif" alt="">';

                }else{
				
$elementsquery = mysql_query(sprintf("SELECT type FROM %s_map_elements WHERE latitude='%d' AND longitude='%d' AND map='%d' LIMIT 1", $mysql->pref, mysql_real_escape_string($y_end), mysql_real_escape_string($x_start), mysql_real_escape_string($maprow['id'])));
		           $elementsrow = mysql_fetch_assoc($elementsquery);
				
				$player = (mysql_num_rows($elementsquery) != 0 AND $elementsrow['type'] == 0) ? null : '<input style="position: relative; top: 6px" type="radio" name="radio" value="'.$x_start.','.$y_end.'" onchange="submit(this.form)">';
				
				}
				
				$page .='<div style="width: 32px; height: 32px; float: left">'.$player.'</div>';	
				
				$x_start++;
			}
			
			$page .='</div>';

			$x_start = $debutx;
			$y_end--;
		}

Merci à ceux qui pourront m'aider.
 
Nouveau WRInaute
Si la table map_elements ne contient que les cases nécéesaires, cette requête devrait fonctionner :

Code:
SELECT type FROM map_elements AS me
JOIN map m ON m.id = me.map
WHERE m.id = $select_map
ORDER BY me.latitude, me.longitude

Sinon, si les cases peuvent dépasser size_x et size_y, il faut rajouter des conditions :

Code:
SELECT type FROM map_elements AS me
JOIN map m ON m.id = me.map
WHERE m.id = $select_map AND me.latitude < m.size_y AND me.latitude > -m.size_y  AND me.longitude < m.size_x AND me.longitude > -m.size_x 
ORDER BY me.latitude, me.longitude
 
WRInaute impliqué
Je viens d'utiliser ta deuxième solution, mais je me retrouve avec une requete invalide : mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Voici la requete :

Code:
$mapquery = mysql_query("SELECT type FROM rpg_map_elements AS me JOIN rpg_map m ON m.id = me.rpg_map WHERE m.id = $select_map AND me.latitude < m.size_y AND me.latitude > -m.size_y  AND me.longitude < m.size_x AND me.longitude > -m.size_x ORDER BY me.latitude, me.longitude");
		$maprow = mysql_fetch_assoc($mapquery);
 
Nouveau WRInaute
Je pense qu'il y a un erreur dans la requête SQL.

Pour debuguer et afficher l'erreur :

Code:
$mapquery = mysql_query("...") or die(mysql_error());
 
Discussions similaires
Haut