Probleme de requete avec 1,n 1,n sur deux tables

Résolu
Demipouce Messages postés 3 Date d'inscription mardi 12 octobre 2010 Statut Membre Dernière intervention 13 septembre 2011 - 6 sept. 2011 à 14:17
Demipouce Messages postés 3 Date d'inscription mardi 12 octobre 2010 Statut Membre Dernière intervention 13 septembre 2011 - 6 sept. 2011 à 16:56
Bonjour a tous !

J'ai un petit soucis actuellement avec SQL server :

3 Tables :
USERS (ID, LOGIN, PWD)
USERS_GROUPS (USER_ID, GROUP_ID) les deux en primary key
GROUPS (ID, LABEL)

Dans mon code je dois ecrire un insert pour ajouter un individu, et lui attribuer un groupe, sachant qu'on peut lui en attribuer plusieurs.

Cependant je ne vois pas comment joindre les tables pendant l'insert..
Je suis coince a ce niveau la :

"INSERT INTO USERS, USERS_GROUPS (Login, Password, BugLogin, Group_Id) VALUES ('" + txtBoxLogin.Text + "' ,'" + txtBoxPassword.Text + "' ,'" + txtBoxBugLogin.Text + "' ,'" + lstBoxUserGroup.Text + "') ")


Si quelqu'un pouvait me venir en aide au niveau de la requete je vous serais reconnaissant.

Bonne journee

6 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
6 sept. 2011 à 16:52
ceci dit, si tu comptes garder ta solution de départ
(à savoir 3 tables avec USERS_GROUPS comme table
unissant les deux autres), il faudra corriger ton instruction d' insertion.
Pour ajouter un nouvel user, il faudra le faire en deux temps.
L' insèrer dans la table USERS dans un premier temps.
Ensuite l' ajouter à USERS_GROUPS.En définissant son GROUPE.
Tout cela dans un transaction.

DBEngine.BeginTrans
INSERT INTO USERS ( ID_USER, PWD ) VALUES( xUSER, xPWD );
INSERT INTO USERS_GROUPS (ID_USER, ID_GRO UP ) VALUES( xUSER, xGROUP);
DBEngine.CommitTrans


[] Ce qui va sans dire. va mieux en le disant.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
6 sept. 2011 à 14:58
Salut,
si je comprend bien:
-USERS --> tables UTILISATEURS
-GROUPS --> tables GROUPES

A quoi sert alors GROUPES_USERS ?
Si c' est pour grouper les utilisateurs, ce n' est pas la bonne approche.
Si un utilisateur peut appartenir à plusieurs groupes à la fois,
il suffit d avoir USER_ID et GROUP_ID comme clé primaire
dans la table USERS .La relation sera alors avec la table GROUPS
via GROUP_ID.


*USERS *GROUPS
-[b]USER_ID ---> -GROUP_ID
-GROUP_ID ----//b

Pour ajouter à la table USERS un individu ( nouveau ou déjà existant) ,
il suffit alors d' insérer son ID et l' ID du groupe auquel il appartiendra.
[] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
6 sept. 2011 à 15:04
Problème de mise en forme

*USERS *GROUPS
-USER_ID /---> -GROUP_ID
-GROUP_ID ----/
a relation entre GROUP_ID d users et GROUP_ID de groups.
0
Demipouce Messages postés 3 Date d'inscription mardi 12 octobre 2010 Statut Membre Dernière intervention 13 septembre 2011
6 sept. 2011 à 15:06
Mais dans ce cas suivant, si group ID est dans User ID en tant que primary key aussi, comment dire qu'il appartiendra au groupe 2 et aussi au groupe 3 par exemple ?

Et derniere question comment faire pour definir group ID en primary key dans Users ? Je dois le faire par le diagramme en cliquant glissant ?

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
6 sept. 2011 à 15:22
lire attentivement :

...il suffit d avoir USER_ID et GROUP_ID comme clé primaire .

Ainsi l' individu 101 peut appartenir au group 32 une fois et au geoupe 45 une fois.




[] Ce qui va sans dire. va mieux en le disant.
0
Demipouce Messages postés 3 Date d'inscription mardi 12 octobre 2010 Statut Membre Dernière intervention 13 septembre 2011
6 sept. 2011 à 16:56
Parfait tout marche pour le mieux .
Encore merci de tes conseils, jai opte pour la solution numero 2 car pas concluante pour la premiere .

Cordialement
0