Commande SQL

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

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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
      1. 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
        1. 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.