Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 19/10/2014 11:48:59
- CHR
- Membre
JOIN sur une partie du champ
Bonjour,
J'ai une table qui contient par exemple trois champs : ID, User, Roles_ID.
Une deuxième qui contient les Roles : Roles_ID, Détail
Dans la table 1, un user peut avoir plusieurs roles, séparés par une virgule.
Exemple : "1; chr; 1,3,7", "2; bvh; 2,7", "3; lmh; 7"
Dans la table 2, les roles listés avec leurs id.
Exemple : "1; Sortir", "2; Rentrer", "3; Manger", "4; Dormir", "5; Travailler", "6; Voyager", "7; Etudier"
J'ai besoin d'une query qui me donne :
1 - Sortir - 1 (chr)
2 - Rentrer - 1 (bvh)
3 - Manger - 1 (chr)
4 - Dormir - 0 (-)
5 - Travailler - 0 (-)
6 - Voyager - 0 (-)
7 - Etudier - 3 (chr, bvh, lmh)
J'imagine que c'est tout bête, j'avais pensé à un JOIN mais je ne sais pas si le JOIN accepte autre chose qu'un = et si oui, comment le formuler.
D'avance merci pour votre aide !
Bon dimanche !
chr
Hors ligne
#2 25/10/2014 08:12:33
- PmGs7
- Membre
Re : JOIN sur une partie du champ
Bonjour CHR,
c'est pas tout bête, car on touche à la structure même des bases de données relationnelle.
La table 1 est pensée 'saisie facile' mais elle ne peut pas être liée à la table 2, le seul moyen pour faire un lien est d'avoir une table 1 ( ID_user, user ) et une table 3 ( iD_user, ID_role )
et donc pour répondre à la question :
1) on garde la structure avec 2 tables , donc sans cohérence ( cad on paut saisir dans table 1 un id_role qui n'existe pas dans table 2 ) et on passe par une fonction ( pgsql par exemple ) et non une requête
2) on modifie la structure avec 3 tables, et on gagnera la cohérence, la possibilité de répondre à la question avec un sql mais il faudra 'complexifier' la saisie.
Bon WE.
Hors ligne
Pages : 1