Bonsoir a tous,

J'ai devant moi deux relations R(x,y,z,t) et S(x,y) et je cherche a ecrire la requete sql de: projection(x,y,z)(R) / S
Où le slash est l'opérateur de division.

J'aimerai bien savoir ce que va me retourner cette requete avec ces deux tables:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
I(R)| x |y |z  | t
     |x1|y1|z1|t1
     |x1|y1|z1|t2
     |x1|y2|z1|t1
     |x2|y2|z1|t1
     |x2|y1|z1|t1
     |x1|y1|z2|t1
     |x1|y1|z2|t2
     |x2|y2|z2|t1
 
I(S)| x |y 
     |x1|y1
     |x1|y2
     |x2|y2
J'ai peut etre quelque chose comme cela pour la requete sql:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
--Vue v1 [Faut il mettre SELECT DISTINCT ??]
CREATE VIEW v1 AS SELECT x,y,z FROM R;
SELECT COUNT(*), Z FROM v1 GROUP BY Z;
 
CREATE VIEW v3 AS SELECT DISTINCT x,y FROM S;
SELECT z FROM v1 GROUP BY z 
     HAVING COUNT(*)=(SELECT COUNT(*) FROM v3);
Ne me demandez pas si ca compiles ou autre, ce n''est qu'une version papier...
J'espère ne pas avoir tapé les deux tables inutilement
merci à vous !