Bonjour,
Je réalise une requête qui doit me ramener des informations sur des dossiers, en y ajoutant des informations en provenance de tables liées en N/N (1 dossier peut pointer 1 ou plusieurs "motifs", et 1 motif peut être invoqué par plusieurs dossiers). Afin de conserver 1 seule ligne par dossier, j'agrège dans mon select les résultats en provenance (array_agg). Jusqu'ici, tout va bien.
Mais les choses se gâtent quand j'ajoute une autre jointure (toujours LEFT) sur une table qui contient des infos liées à 1 seul de ces motifs (le motif "2"), et une colonne pour les afficher dans mon select. du coup, quand mon dossier invoque les motifs 1 et 3, tout va bien, mais quand il invoque les motifs 1 et 2, je me retrouve avec 2 lignes pour ce même dossier : une pour le motif 1, sans infos ajoutée, et 1 pour le motif 2 qui va contenir mes infos en +.
Ce que je voudrais, c'est toujours conserver 1 seule ligne par dossier, qu'il y ait ou non des infos à rajouter pour le motif 2.
Ma requête ressemble à ça (simplifiée) :
Merci de votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT dossier.dos_id AS Numéro_interne, array_to_string(array_agg(DISTINCT lmr.lmot_libelle),E'\n - ') Motif_Dossier, CASE WHEN mot2_isoption IS true THEN 'oui' ELSE 'non' END AS Option_motif_2, dossier.dos_adresse FROM dossier LEFT JOIN motifsdossier mr ON dossier.dos_id = mr.dos_id INNER JOIN motif lmr ON mr.lmot_id = lmr.lmot_id LEFT JOIN repmotifdeux ON (mr.motd_id = motifdeux.motd_id AND mr.lmot_id = 2) WHERE dossier.departement_id= '1' GROUP BY dossier.dos_id, mot2_isoption
Bonne journée
Partager