ranouf
Messages postés237Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention31 août 2009
-
17 juil. 2007 à 15:07
ranouf
Messages postés237Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention31 août 2009
-
24 juil. 2007 à 15:54
Bonjour,
Je me demande si c'est possible de résoudre ce problème par une requete :
Imaginez un cube de 5*5*5 cases.
Dans ce cube 2 cases appartiennent à Toto
Et 1 case appartient à Gege
Je souhaite connaitre la liste des emplacements disponibles pour ajouter une case à toto, sachant qu'il faut respecter les conditions suivantes :
- les cases ne doivent appartenir à personne,
- la case ajoutée doit etre en contact avec l'une des deux cases de toto.
Table CASE
x INT
y INT
z INT
Proprietaire STRING
Dans la table on aura :
2 / 3 / 2 / TOTO
2 / 3 / 3 / TOTO
4 / 4 / 3 / GEGE
Afin déviter de surcharger la table je ne veux pas remplir les cases vides.
ranouf
Messages postés237Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention31 août 2009 17 juil. 2007 à 16:08
Ce que j'ai trouvé c'est en remplissant toute la table ce que je voudrai éviter afin d'avoir un cube dynamique et surtout de ne pas surcharger la base de données.
Je vous donne la requete dans ce cas la:
SELECT C.*
FROM Case C, (SELECT * FROM Case WHERE Id_User = 1) CU
WHERE C.x IN (CU.x +1, CU.x -1)
AND C.y = CU.y
AND C.z = CU.z
AND C.Id_User = 0
UNION (
SELECT C.*
FROM Case C, (SELECT * FROM Case WHERE Id_User = 1) CU
WHERE C.x = CU.x
AND C.y IN (CU.y +1, CU.y -1)
AND C.z = CU.z
AND C.Id_User = 0
)
UNION (
SELECT C.*
FROM Case C, (SELECT * FROM Case WHERE Id_User = 1) CU
WHERE C.x = CU.x
AND C.y = CU.y
AND C.z IN (CU.z +1, CU.z -1)
AND C.Id_User = 0
)