Bonjour à toutes et à tous.
Base de données : postgresql
J'essaie de programmer un forum élémentaire, pour un club de sport.
Il y a trois tables dont voici la description :
Table t_e_utilisateurs_uti :
Table t_e_sujets_suj :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 uti_id serial NOT NULL, uti_nom character varying(30) NOT NULL, uti_mot_de_passe character varying(255) NOT NULL, uti_courriel character varying(255) NOT NULL, uti_date timestamp without time zone NOT NULL, uti_grade integer NOT NULL, CONSTRAINT "PK_uti_id" PRIMARY KEY (uti_id )
Table t_e_reponses_rep
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 suj_id serial NOT NULL, uti_id integer NOT NULL, suj_titre character varying(255) NOT NULL, suj_date date NOT NULL, CONSTRAINT "PK_suj_id" PRIMARY KEY (suj_id ), CONSTRAINT "FK_uti_id" FOREIGN KEY (uti_id) REFERENCES t_e_utilisateurs_uti (uti_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION
Je cherche à obtenir les résultats suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 rep_id serial NOT NULL, uti_id integer NOT NULL, suj_id integer NOT NULL, rep_texte text NOT NULL, rep_date date NOT NULL, rep_heure time without time zone, CONSTRAINT "PK_rep_id" PRIMARY KEY (rep_id ), CONSTRAINT "FK_suj_id" FOREIGN KEY (suj_id) REFERENCES t_e_sujets_suj (suj_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT "FK_uti_id" FOREIGN KEY (uti_id) REFERENCES t_e_utilisateurs_uti (uti_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION
Titre du sujet; Nombre de réponses; Auteur du sujet; Nom du dernier répondeur; date et heure de la dernière réponse.
Voici le requête qui me permet d'approcher ce que je demande :
Voici ce que donne cette requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 SELECT t_e_utilisateurs_uti.uti_nom AS "Auteur", t_e_sujets_suj.suj_titre AS "Titre", MAX(t_e_reponses_rep.rep_date) AS "Date rép", MAX(t_e_reponses_rep.rep_heure) AS "Heure rép", COUNT(t_e_reponses_rep.rep_id) AS "Nbre rép" FROM t_e_reponses_rep, t_e_sujets_suj, t_e_utilisateurs_uti WHERE t_e_reponses_rep.suj_id = t_e_sujets_suj.suj_id AND t_e_sujets_suj.uti_id = t_e_utilisateurs_uti.uti_id GROUP BY t_e_sujets_suj.suj_date, t_e_sujets_suj.suj_titre, t_e_utilisateurs_uti.uti_nom ORDER BY t_e_sujets_suj.suj_date DESC;
Je ne vois pas comment obtenir le nom du répondeur avec cette requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 "Sapo";"vtt des Chambarans";"2013-11-09";"16:32:12";1 "Christesse";"Assemblée Générale";"2013-11-11";"18:42:53";3 "Miflon";"Gégé le retour";"2013-08-17";"13:02:36";4 "Lordan";"La Tatoune";"2013-09-07";"14:46:02";2
Donc voici mes questions:
- Cette requête vous paraît-elle correcte, y a t-il mieux?
- Pouvez-vous m'aider à obtenir le nom du dernier répondeur?
Merci pour vos futures réponses.
Miflon.
Partager