Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1495 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment savoir si un sous ensemble est contenu dans ensemble

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment savoir si un sous ensemble est contenu dans ensemble

n°1740041
Giz
Posté le 02-06-2008 à 09:24:29  profilanswer
 

Bonjour,
 
Voilà je bute sur une requête SQL : Admettons que j'ai une table avec 2 foreign key (FK1, FK2) et d'autres colonnes.
Je sais qu'une contrainte d'unicité sur le couple  (FK1, FK2) a lieu.
Je recherche donc toutes les les lignes de la table tel que par exemple le couple (1,3) soit présent dans l'ensemble des couples de la table qui sont par exemple {(3,1),(1,3),(2,1)}. Dans mon exemple, une ligne sera donc retournée.
Je bute sur cette requête.
 
NB : il s'agit d'ensemble ordonné (1,3) et pas (3,1).
 
Merci de votre aide :)


Message édité par Giz le 02-06-2008 à 09:25:25

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
mood
Publicité
Posté le 02-06-2008 à 09:24:29  profilanswer
 

n°1740193
olivthill
Posté le 02-06-2008 à 12:14:13  profilanswer
 

Où est la difficulté ? Par exemple, s'il n'y avait pas d'ordre, est-ce que vous y arriveriez ?
D'ailleurs, je ne comprends pas bien votre notion d'ordre, car dans une base de données relationnelle, il n'y a pas d'ordre.
 
Est-ce que vous voulez :
 
Soit la table Clients : champs : Id, Nom, Prenom
Soit la table Orders : champs : Id, Nom, Prenom, Article
La requete qui retourne le nom et prénom des clients ayant commandé au moins un article est

Select distinct C.Nom, C.Prenom
  from Clients C, Orders O
 where O.Nom = C.Nom
   and O.Prenom = C.Prenom

n°1740220
Giz
Posté le 02-06-2008 à 13:39:11  profilanswer
 

Hum, j'ai du mal m'expliquer, je reprends.
 
Soit la table A1 : PK1 champ1
Soit la table A2 : PK2, champ1
Soit la table B : FKB1 ref PK1, FKB2 ref PK2, champ1 + contrainte d'unicité sur la couple (PKB1,PKB2)
Soit la table C : FKC1 ref PK1, FKC2 ref PK2, champ1+ contrainte d'unicité sur la couple (PKC1,PKC2)
Soilt E un ensemble de paire (FK1, FK2)
 
Question : A partir d'un ensemble de ligne de C, retourner un ensemble de ligne de B tel que pour chaque ligne de B retournée, la paire ordonnée (FKB1, FKB2) soit présente dans au moins une ligne de C.
 
OK ?
 
Exemple :
 
Contenu de la table A1 :
 
1,'toto'
2,'titi'
3,'tyty'
 
Contenu de la table A2 :
 
2,'toto'
1,'titi'
3,'tyty'
 
Contenu de la table B :
3,2,'toto'
3,1,'toto'
1,3,'toto'
 
Contenu de la table C :
2,1,'toto'
3,1,'toto'
2,3,'toto'
 
Si je donne en entrée l'ensemble des lignes de la table C, la requête me retourne la ligne 3,1,'toto'


Message édité par Giz le 02-06-2008 à 14:13:07

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°1740295
skeye
Posté le 02-06-2008 à 15:06:57  profilanswer
 

mot-clé exists?


---------------
Can't buy what I want because it's free -
n°1740389
vttman2
Je suis Open ...
Posté le 02-06-2008 à 16:15:25  profilanswer
 

olivthill a écrit :

Où est la difficulté ? Par exemple, s'il n'y avait pas d'ordre, est-ce que vous y arriveriez ?
D'ailleurs, je ne comprends pas bien votre notion d'ordre, car dans une base de données relationnelle, il n'y a pas d'ordre.
 
Est-ce que vous voulez :
 
Soit la table Clients : champs : Id, Nom, Prenom
Soit la table Orders : champs : Id, Nom, Prenom, Article
La requete qui retourne le nom et prénom des clients ayant commandé au moins un article est

Select distinct C.Nom, C.Prenom
  from Clients C, Orders O
 where O.Nom = C.Nom
   and O.Prenom = C.Prenom



 
Vu ton problème Giz et compte-tenu de ton explication supplémentaire ... je pense que OlivThill  
t'a donné la bonne requête
=>
 une simple jointure entre la table B et C avec PKB1 = PKC1 et PKB2 = PKC2 ...
 
 


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
n°1744450
HappyHarry
Posté le 10-06-2008 à 22:17:35  profilanswer
 

vttman2 a écrit :


 
Vu ton problème Giz et compte-tenu de ton explication supplémentaire ... je pense que OlivThill  
t'a donné la bonne requête
=>
 une simple jointure entre la table B et C avec PKB1 = PKC1 et PKB2 = PKC2 ...
 
 


 
+1  
 
déterminer si un ensemble est inclus dans un autre revient à prouver que tous ses éléments sont dans l'autre ensemble
une bête jointure, donc (et accessoirement vérifier que ca correspond au bon nombre de lignes, si vraiment tu insistes)
 
ou inversement qu'il n'existe aucun élément de ton ensemble qui ne soit pas dans l'autre, vérifiable aussi facilement


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment savoir si un sous ensemble est contenu dans ensemble

 

Sujets relatifs
Assigner à une variable JS le contenu d'un champ[Résolu] Comment savoir si la fonction open se déroule bien ?
modifier le contenu d'un "text" svg2 contenu sur la même ligne en xhtml strict
Contenu dune page dans une autre !Exécuter une procédure contenu dans un module
Afficher différent contenu en ligneSavoir si un mot est dans une phrase VBS
[Résolu] contenu de $_POST bizarre[word] contenu d'une variable en object
Plus de sujets relatifs à : Comment savoir si un sous ensemble est contenu dans ensemble


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR