Bonjour,
jai mis sur place un système de gestion de contact basé sur le principe suivant:
Chaque personne enregistrée peut:
- avoir ou non un ou plusieurs contact téléphonique;
- être ou non connecté à un réseau social, ou tout autre site
- avoir ou non une ou plusieurs photos (le lien de la photo est enregistré)
- avoir ou non plusieurs descriptions
Le MCD correspondant est joint en annexe.
J’écris une requête qui ramène toutes les personnes (une seule ligne par personne quelque soit le nombre de contacts, de sites, ....). J'ai fait quelques recherches et j'ai trouver qu'il fallait utiliser GROUP_CONCAT, et voici ma requête:
Mais malgré le fait que j'utilise DISTINCT dans GROUP_CONCAT, les contacts sont dupliqués.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 select p.PERS_ID,p.PERS_NOM as nom,p.PERS_DATE_CONTACT as date_contact, com.COM_NOM AS commune, GROUP_CONCAT(DISTINCT c.contact SEPARATOR '/') contact,GROUP_CONCAT(DISTINCT cmt.DESC_LIBELLE SEPARATOR '-->' ) as commentaire , GROUP_CONCAT(DISTINCT s.SITE_NOM SEPARATOR ':::') site,GROUP_CONCAT(DISTINCT s.SITE_URL SEPARATOR ':::') lien,GROUP_CONCAT(DISTINCT cn.CON_PSEUDO SEPARATOR ':::') pseudo,GROUP_CONCAT(DISTINCT cn.CON_URL SEPARATOR ':::') profil, GROUP_CONCAT(DISTINCT photo.PHOTO_NOM SEPARATOR ':::') photo,ap.APPVALEUR note,ap.APPLIBELLE appreciation,st.RELATION_LIBELLE relation, ast.RELATION_DATE ,ast.RELATION_COMMENTAIRE raison_relation from personne p LEFT JOIN (habiter h1 left join commune com on((h1.COM_ID = com.COM_ID))) ON h1.PERS_ID=p.PERS_ID LEFT JOIN contact c ON c.PERS_ID=p.PERS_ID LEFT JOIN description cmt ON cmt.PERS_ID=p.PERS_ID LEFT JOIN (etre_connecte cn INNER join site s on((s.SITE_ID = cn.SITE_ID))) ON cn.PERS_ID=p.PERS_ID LEFT JOIN photo ON photo.PERS_ID=p.PERS_ID LEFT JOIN (valoir v INNER join appreciation ap on((v.APPID = ap.APPID))) ON v.PERS_ID=p.PERS_ID LEFT JOIN (avoir_statut ast INNER join statut st on((ast.IDSTATUT = st.IDSTATUT))) ON ast.PERS_ID=p.PERS_ID GROUP BY p.PERS_NOM
Quelqu'un pourrait-il m'aider à retrouver ce qui va pas dans mon code.
Partager