Commande SQL

stevengren Messages postés 176 Statut Membre -  
BadGuitarist Messages postés 373 Statut Membre -
Bonjour,
j'ai une base de données contenant des triangles et la mesure des trois cotés c'est-à-dire le CoteA, Coteb coteC . Je dois récupérer tous les triangle isométrique dans ma base c'est-à-dire que je dois récupérer les triangle qui par exemples A=2 B=3 C=4 et A=2 B=3 C=4 C'est 2 triangle sont isométriques car le triangle est identique mes ses cotés sont dans un ordre différent.

Les triangles suivant sont isométrique
A=2 b=3 c=4
a=3 b=2 c=4
a=4 b=2 c=3
a=2 b=4 c=2

Je n'arrive pas a faire de commande select pour récupéré seulement les triangles isométrique
Select * from Triangle where ??????

4 réponses

  1. loupius Messages postés 789 Statut Membre 148
     
    Une solution bestiale...
    SELECT * FROM triangle WHERE
      (a=2 OR b=2 OR c=2) AND
      (a=3 OR b=3 OR c=3) AND
      (a=4 OR b=4 OR c=4);
    
    En attendant une meilleure solution.
    Bonne continuation.
    0
  2. al_right Messages postés 142 Statut Membre 9
     
    Il le seraient si la somme de leur coté été égale?
    ou y a t'il des possibilités a=1,5 b=3,5 c=4?
    http://dev.mysql.com/doc/refman/5.0/fr/searching-on-two-keys.html
    0
  3. stevengren Messages postés 176 Statut Membre
     
    Les coté sont simplement des int (je n'ai pas de float) et sa ne fonctionne pas seulement avec la somme des coté car par exemple
    A=10 b = 4 c=2 la somme = 16
    et le triangle
    A=9 b= 5 c=2 la somme est aussi de 16 alors que les triangles ne sont pas isométrique
    c'est la que je suis vraiment embêter
    0
  4. BadGuitarist Messages postés 373 Statut Membre 27
     
    Bonsoir stevengren,

    En faisant appel à du SQL standard, pour faire le recherche que tu demandes, il te faut parcourir plusieurs fois ta table Triangle.

    Remarque : présentement, je te donne l'idée générale de mon idée;
    demain, si le sujet est toujours ouvert, je tenterai de t'apporter une solution.

    SELECT T1.a, T1.b, T1.c
    FROM triangle T1, -- sert pour étudier tous les triangles référencés
    triangle T2 -- sert de table de comparaison
    WHERE ( T1.a = T2.a -- Cas 1 : les triangles ont le même a
    AND T1.b = T2.c
    AND T1.c = T2.b )
    OR ( T1.b = T2.b -- Cas 2 : les triangles ont le même b
    AND T1.a = T2.c
    AND T1.c = T2.b )
    OR ( T1.c = T2.c -- Cas 3 : les triangles ont le même c
    AND T1.a = T2.b
    AND T1.b = T2.a )
    OR ( toutes les autres combinatoires possibles )

    Remarque : T1 et T2 sont bien 2 références sur la même table triangle.

    A cette heure-ci, sans avoir fait de tests, cela me semble pas trop stupide ;-)

    Bon courage.

    Cordialement,
    BG.
    0