OVH Cloud OVH Cloud

Sélectionner des enregistrements qui contiennent plusieurs 2-uplet...

1 réponse
Avatar
Gilles TOURREAU
Bonjour tout le monde !

Voilà j'ai une table suivante :

|N°Case | Val1 | Val2 |
1 x1 y1
1 x2 y2
1 x3 y3
1 x4 y4
1 x5 y5
2 x1 y1
2 x2 y2
2 x4 y4
3 x1 y1
3 x3 y3
4 x2 y2

L'utilisateur saisie dans un tableau :

x1 et y1
x2 et y2
x3 et y3

Je dois essayer de trouver tous les "n°Case" de cette table qui
contiennent au moins ces trois 2-uplet saisie par l'utilisateur (dans
mon exemple la case n°1 est la solution)...

Pour corser le tout, il faudrait que cette requete puisse être executé
avec n'importe quel nombre de 2-uplet (ici j'ai fais avec 3 2-uplet,
mais l'utilisateur peut saisir aussi n 2-uplet)

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

1 réponse

Avatar
Antoun
Gilles TOURREAU wrote:
Bonjour tout le monde !

Voilà j'ai une table suivante :

|N°Case | Val1 | Val2 |
1 x1 y1
1 x2 y2
1 x3 y3
1 x4 y4
1 x5 y5
2 x1 y1
2 x2 y2
2 x4 y4
3 x1 y1
3 x3 y3
4 x2 y2

L'utilisateur saisie dans un tableau :

x1 et y1
x2 et y2
x3 et y3

Je dois essayer de trouver tous les "n°Case" de cette table qui
contiennent au moins ces trois 2-uplet saisie par l'utilisateur (dans
mon exemple la case n°1 est la solution)...

Pour corser le tout, il faudrait que cette requete puisse être executé
avec n'importe quel nombre de 2-uplet (ici j'ai fais avec 3 2-uplet,
mais l'utilisateur peut saisir aussi n 2-uplet)

En vous remerciant par avance de vos lumières...

Cordialement




Tu mets la saisie utilisateur dans une table, par ex.
Saisie (Val1, Val2). Tu jointures ensuite sur Val1 et Val2 afin d'avoir
toutes les combinaisons valides. Il te faut les N°Case avec au moins 3
combinaisons valides :

SELECT N°Case
FROM TableOriginale O
INNER JOIN Saisie S
ON O.Val1 = S.Val1 AND O.Val2 = S.Val2
GROUP BY N°Case
HAVING COUNT(N°Case) >= 3

Je suppose qu'il n'y a pas de doublon sur ta table originale. Sinon il
faut une sous-requête ou une vue qui y fasse un DISTINCT.

Antoun