|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Bonjour à tous,
Je suis face à un petit problème sur une de mes requetes. J'ai une table nommé "tache" qui contient une liste de tache a laquelle est notemment relié un utilisateur. J'ai logiquement une table "user" : Code :
On m'a ensuite demander la possibilité de relié plusieurs utilisateur à une même taches , tout en étant diffirents de l'utilisateur principal. j'ai donc créer une table tache_assoc pour faire le lien entre tout ce petit monde : Code :
Code :
Auriez vous une idée ? |
||||||
|
00
|
|
|
#2 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
salut,
tu ne fais pas de jointure entre ta table tache_assoc et ta table user par contre avec ta nouvelle table, ta jointure entre tache et user devient inutile non? la liaison ne devrait pas se faire comme cela ou bien j'ai mal compris? |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Citation:
J'ai besoin de faire une jointure entre tache et user pour avoir nom et prenom de l'utilisateur principal mais j'ai également besoin d'avoir les nom et prenom des personnes dans tache_assoc qui est également lié à tache... bref je patauge |
||
|
00
|
|
|
#4 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
peux tu donner un petit jeu d'essai pour qu'on comprenne mieux?
j'ai du mal à voir l'intérêt de ta 3eme table si une tache est deja relié à un user via ta table tache. |
|
|
00
|
|
|
#5 |
![]() ![]() |
Je crois que ce problème ressemble à un morceau de la base de données du logiciel sur lequel je travaille :
Utilisateurs -0,n----Creer----1,1- Projets Utilisateurs -0,n----Affecter----0,n- Projets Il n'y a qu'un créateur de projet (dans ton cas un utilisateur principal de la tâche, le responsable peut-être ?) mais d'autres utilisateurs sont affectés au projet (d'autres utilisateurs affectés à une tâche). Remplace Projets par Taches dans ton cas et tu as ton morceau de MCD. Passons aux tables : Users(idUser, login, pass, email, idgroupe, nom, prenom) Taches(idTache, date_ask, demandeur, client, idUser, descrip, etat) Affecter(idUser, idTache, ...) Les clés primaires sont soulignées et les clés étrangères sont en italique.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#6 | |||||||
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Oui voici un extrait :
Code :
Code :
Citation:
Citation:
Citation:
PS: j'ai enlever toutes les clé étrangère de l'extrait fournis histoire que ca ne pose pas de problème avec les autres tables que je n'ai pas données |
|||||||
|
00
|
|
|
#7 | ||
![]() ![]() |
Ce qu'il te manque, c'est la jointure entre table associative 'tache_assoc' et la table 'user' :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Merci , c'était bien ça le problème
Dernière question , il est tout à fait possible que j'ai plusieurs intervenant sur une même tache. Avec cette requete , j'aurais par exemple 4 lignes pour la tache d'id 5. Est il possible de regrouper tous les "nomAutres" dans le même champs (par exemple séparé par des virgules) ou est il plus simple de faire le traitement via php ? |
|
00
|
|
|
#9 | ||
![]() ![]() |
Oui c'est possible en utilisant la fonction GROUP_CONCAT :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#10 |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
Salut Cinephil,
il ne manque pas un group by dans ta requête? A+ Michel |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Super merci
Me coucherais moins bête ce soir ! Juste petite correction , il manque un GROUP BY t.id en fin de requete puisque c'est indispensable pour toutes les fonction de groupage style SUM,MAX ... |
|
00
|
|
|
#12 | |
![]() ![]() Michel Consultant informatique Inscription : mai 2005 Messages : 3 006 ![]() |
Citation:
je dirais même que normalement, il faut mettre dans ton group by toutes tes colonnes présentes dans le select qui ne sont pas avec une fonction de groupage (mais bon comme c'est du MySQL, ça passe |
|
|
|
00
|
|
|
#13 |
![]() ![]() |
Exact Cybher, j'avais (encore) zappé ce détail ! Re-
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com