voilà, j'ai un souci de priorité dans une requete entre OR et AND.
Je faisais cette requete-là :
//on regarde s'il y a une ou plusieurs unités amies autour de l'unité attaquée, à 1 case de distance.
$sql = "SELECT per_image FROM carte_perso
where
per_x=($xunitedef+1) or per_x='$xunitedef' or per_x=($xunitedef-1)
and per_y=($yunitedef+1) or per_y='$yunitedef' or per_y=($yunitedef-1)
and per_image='fantassins' or per_image='snipers' or per_image='terrestres' or per_image='aeriens'
and bataille='$bataille'";
Mon objectif étant de compter les unités se trouvant à une case de distance et étant amies, donc, de compter avec le AND prioritaire sur le OR :compter unité
quand per_x correspond à une des coordonées données ( OR )
ET
quand per_y correspond à une des coordonnées données ( OR )
ET
quand l'image correspond à une des images données. ( OR )
Je viens de comprendre pourquoi ça me comptait toujours 15 ou 20 unités.
Le OR est donc prioritaire sur le AND, ou ma manière de présenter la requête le met prioritaire...
Ainsi, cette requête fait le contraire de ce que je voulais.
Je peux le voir en la décomposant logiquement ainsi :
//on regarde s'il y a une ou plusieurs unités amies autour de l'unité attaquée, à 1 case de distance.
$sql = "SELECT per_image FROM carte_perso
where
per_x=($xunitedef+1)
or
per_x='$xunitedef'
or per_x=($xunitedef-1) and per_y=($yunitedef+1)
or per_y='$yunitedef'
or per_y=($yunitedef-1) and per_image='fantassins'
or per_image='snipers'
or per_image='terrestres'
or per_image='aeriens'
and bataille='$bataille'";
Ma question est donc la suivante :comment puis-je formuler cette requête pour que le AND soit prioritaire sur le OR et que ma recherche aboutisse comme je le désire ?
Merci d'avance...