|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
Bonjour,
voila j'ai deux tables avec deux associations qui les relient : table membre reliée à table associer et cette table reliée à un groupe. table membre reliée à table groupe_membre et cette table reliée à un groupe. voici ma jointure mais je n'arrive pas a faire la deuxième partie j'ai une erreur: Code :
- Not unique table/alias: 'groupe_ovip' merci de votre aide. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 092 ![]() |
Bonjour,
Tu dois mettre un alias sur les tables que tu utilises 2 fois dans ta requête. D'ailleurs je trouve que tu as une façon bizarre d'écrire ta requête: une liste de table dans le from, puis des inner join... sur les mêmes tables. Tatayo. |
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() |
C'est une salade au thon
![]() ![]() ![]() tu peux mettre ça Code :
|
||
|
|
02
|
|
|
#4 | ||
|
Membre confirmé
![]() Grégoire MARTINIngénieur développement logiciels Inscription : janvier 2011 Messages : 128 ![]() |
Bonjour,
Code :
__________________
Cordialement. |
||
|
|
01
|
|
|
#5 | ||
![]() ![]() |
En évitant la guerre des étoiles et en supprimant les guillemets autour de la valeur numérique (j'ose espérer que cet identifiant est bien de type entier ?), ce sera encore mieux. Je changerais aussi l'ordre des tables pour éviter de pointer sur deux tables dans la même jointure et j'utiliserais des alias plus mnémotechniques.
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 ! |
||
|
10
|
|
|
#6 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
Bonjour,
j'ai essayé votre code mais ça ne me retourne rien, j'aurai du m'expliquer un peu mieux, voila j'ai table membre reliée à table associer et cette table reliée à un groupe. table membre reliée à table groupe_membre et cette table reliée à un groupe. la table associer enregistre les membres qui ont créé des groupes. la table groupe_membre enregistre les membres qui sont contenus dans certains des groupes créés. je voudrais récupérer toutes les informations des membres qui appartiennent au groupe 1 et dont le groupe a été créer par le membre 120. membre 0.n groupe_membre 0.n groupe (appartient au groupe) membre 0.n associer_membre 0.n groupe (creer le groupe) merci. |
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 092 ![]() |
Donc un truc du genre:
Code SQL :
Les deux premières jointures pour le lien entre les membres et leurs groupes, et les deux dernières pour le créateur du groupe. Tatayo. |
||
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
__________________
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
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
rebonsoir,
rien ne fonctionne voici le code SQL si ça peut aider. donc: un groupe peut être créé par 0 ou plusieurs membres 1 membre peut créer 0 ou + plusieurs groupes 1 groupe peut être situé dans 0 ou + membres 1 membre peut être situé dans 0 ou + groupes. Pour expliquer cette histoire d'un groupe qui peut être créé pour 0 ou + plusieurs membres et pas par un seul, j'ai du faire car 2 groupes de base amis, famille doivent être situés dans base dans chaque messagerie des membres. merci j’espère que ça pourra aider, j'ai essayé toute la soirée, et pas reçu ce que je voulais. voici pour groupe: Code :
Merci encore pour l'aide. |
||
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
bonjour,
merci encore pour votre aide je pense qu'il doit manquer un petit truc en fait j'ai un espace membre pour les visiteurs dedans les membres peuvent créer un groupe ex:relation, travail.. et de base ils sont le groupe amis et famille par défaut déjà mis. donc je voudrais que si un client sélectionne dans la liste des groupes qu'il a créé (association associer_groupe) un groupe la liste des membres qui appartiennent à ce groupe (association groupe_membre) s'affiche. donc là on a bien indiqué que seuls ceux du groupe 3 doivent s'afficher mais on a pas indiqué en plus que ce doit être les groupes créé par le membre 120. j'ai fait ceci: Code :
mais il me retourne aucun résultat alors que j'ai bien dans associer_groupe(102,1)et dans groupe_membre (2,120). je ne comprend pas merci encore si on arrive à trouver ça, ça serait génial. |
||
|
|
00
|
|
|
#11 | |||||
![]() ![]() |
Citation:
Code :
Code :
1) Dans ta description des tables, je ne vois pas les clés étrangères. Ce serait dommage d'utiliser le moteur InnoDB et ne pas profiter des clés étrangères. 2) Des données de la table membre devraient être externalisées. Même si tu ne nous as pas donné la structure complète de la table, je devine, à la requête d'insertion, qu'il y aura sans doute plusieurs fois "web", "Perpignan", "Homme", "Célibataire" et peut être encore d'autres colonnes dont je n'ai pas compris la signification. Toutes ces données devraient figurer dans des tables de référence "sexe", "ville", "situation_familiale" et il ne devrait y avoir dans la table membre que les clés étrangères référençant les identifiants de ces tables de référence. 3) Comment fais-tu pour différencier les amis de X des amis de Y puisque tout le monde a finalement le même groupe "amis" ? 4) L'index sur ref_membre dans les tables associatives est inutile puisque c'est la première colonne de la clé primaire.
__________________
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
|
|
|
#12 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
rebonjour,
je pense que je dois vraiment avoir un problème dans ces tables pouvez vous m'aider comme j'ai expliqué, je devais mettre deux groupes amis et famille de base reliés au membre donc en gros j'ai rajouter une association(associer_groupe) qui permet enregistrer référence du membre qui a créé ce groupe mais ayant deux groupe de base il pouvait y avoir comme enregistrement ref_membre et ref_groupe comme ceci car un groupe ne pouvait plus être unique pour chaque membre à cause de cette contrainte: (1,1)(1,2)(2,1)(2,2) et j'ai rajouté une association pour enregistrer les membres qui composent ce groupe. j’espère que vous comprendrez donc là je pense que le problème est bien moi je recherche à afficher les membre qui composent le groupe ex:1 mais dont le membre qui l'a créé et le ex:20. donc là il m'affiche bien les membres de ce groupe mais pas du membre qui l'a de base. merci de votre aide. |
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() |
kate59, peux tu nous donner le resultat que tu veux avoir?
|
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
je voudrai obtenir le nom, le prénom, le pseudo des membres qui composent le groupe ex 10 et qui a été créé par le membre ex 21.
merci. |
|
|
00
|
|
|
#15 | ||||||||||||||
![]() ![]() |
Ce que tu ne comprends pas Kate59, c'est que tu as un problème d'architecture de données.
Je reprends tes données : Citation:
Citation:
Code :
INSERT INTO `associer_groupe` VALUES (2, 1); Citation:
Code :
Et comme il n'y a qu'un groupe 1 qui est le groupe des amis, tu ne peux pas savoir si ce sont les amis du membre 1 ou du membre 2. 1ère solution : Tu supprimes la table associative associer_groupe et tu ajoutes dans la table groupe la clé étrangère référençant le créateur du groupe. Conséquence : tu auras plusieurs groupes qui porteront le même nom, par exemple "Amis", mais ce n'est pas gênant car ce ne sont pas réellement les mêmes groupes, l'un sera en fait "amis de X" et l'autre "amis de Y". D'ailleurs, l'exemple de données que tu as donné montre que c'est déjà le cas : Citation:
2ème solution : Tu ajoutes dans la table membre_groupe l'identifiant du créateur du groupe. C'est à dire qu'en réalité, tu ne fais pas référence au groupe mais au couple représenté dans assoicier_groupe. Perso, je préfère la première car peut-être que le membre X voudra appeler son groupe d'amis non pas "amis" mais "potes" ou "copains" ou "friends"...
__________________
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 ! |
||||||||||||||
|
10
|
|
|
#16 | ||
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
merci de te pencher sur mon problème voila la 1 ère solution je l'avais déjà adaptée au site mais j'ai eu un problème car pour avoir les groupe amis et famille de base dans les messageries relie au membre lors de leur validation d'email, je les active et j'enregistre ces groupes déjà créés au nouveau membre mais voila j'avais besoin des id fixe des groupes pour faire ça :
Code :
à part si tu avais une autre solution pour moi ? MERCI. |
||
|
|
00
|
|
|
#17 | |
![]() ![]() |
Je viens de te dire que ta solution ne peut pas fonctionner !
Citation:
Mais si tu préfères la seconde solution qui consiste à ajouter le créateur du groupe à la table membre_groupe, libre à toi. La seconde solution correspond à ce MCD : membre -1,n----creer----(1,1)- creation_groupe -(1,1)----associer----0,n- groupe |-------------0,n----participer----0,n------------| Tables : membre (id_membre...) groupe (id_groupe...) creation_groupe (ref_membre, ref_groupe) participation_groupe (ref_membre, ref_groupe, ref_createur) Dans la dernière table, tu auras une clé étrangère qui référence la clé primaire de la table "creation_groupe", c'est à dire le couple {ref_membre, ref_groupe} de "creation_groupe". Et "ref_membre" de "participation_groupe" référence "id_membre" de la table "membre".
__________________
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
|
|
|
#18 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
merci je vais regarder la 2ème solution car c'est vrai que s'il y a ex 200 membre ça va être alourdir la base pour rien je pense avec les groupes amis et famille.
merci encore je vais regarder. |
|
|
00
|
|
|
#19 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Il faut rajouter un index unique sur le couple (nom_groupe,id_creator). |
|
|
|
00
|
|
|
#20 | ||
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 706 ![]() |
bonjour,
voila j'ai créer la table mais j'ai cette erreur: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '110-105' for key 1 voici la table: Code :
merci. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com