Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je vais vous exposer mon problème.
J'ai pour le besoin d'un projet étudiant de créer un site dynamique.
Bien qu'étant novice, mon choix s'est porté sur un site qui "référencerait" les différents films, musiques et jeux selon différents critères.
Pour le moment, j'ai crée une base de données uniquement relatives au film.
J'ai ainsi une table film (idfilm, titre, #anneesortie), une table genre (idgenre, genre), une table année (idannée, année) et une table film_genre qui relie les films au(x) genre(s) étant donné qu'un film peut avoir plusieurs genres (id, #film, #genre).
J'ai sur une mes pages web une requête qui affiche tous les films avec les années de sortie selon ce format :
titre du film ANNEE
J'aimerai pouvoir afficher également le (ou les) genre(s) de chaque film de cette sorte :
titre du film ANNEE GENRE1, GENRE2, GENRE3
J'effectue alors cette requête :
SELECT
tabannee.annee,
tabfilm.titre,
tabgenre.genre
FROM
public.tab_film_genre,
public.tabannee,
public.tabfilm,
public.tabgenre
WHERE
tab_film_genre.film = tabfilm.idfilm AND
tabfilm.anneesortie = tabannee.idannee AND
tabgenre.idgenre = tab_film_genre.genre
ORDER BY
tabfilm.titre;
Cependant, avec cette requête, si le film a plusieurs genres, le film est affichée sur plusieurs lignes avec les différents genre de cette sorte :
titre du film ANNEE GENRE1
titre du film ANNEE GENRE2
J'aimerai donc savoir qu'est ce que je dois rajouter dans ma requête.
Cordialement.
Hors ligne
Bonjour,
ce que vous devez ajouter dans la requête pour ? Avoir un tableau des genres, concaténer les genres, ... ?
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour, et merci pour cette réponse rapide,
Pour répondre à votre question, c'est pour obtenir le résultat :
titre du film ANNEE GENRE1, GENRE2, GENRE3
et non plus celui là :
titre du film ANNEE GENRE1
titre du film ANNEE GENRE2
Donc, en bref, pour concaténer les genres, oui.
Dernière modification par kylianMartins (27/03/2016 21:39:33)
Hors ligne
Il vous faut utiliser l'aggrégat string_agg, exemple :
SELECT
tabannee.annee,
tabfilm.titre,
string_agg(tabgenre.genre, ', ')
FROM
public.tab_film_genre,
public.tabannee,
public.tabfilm,
public.tabgenre
WHERE
tab_film_genre.film = tabfilm.idfilm AND
tabfilm.anneesortie = tabannee.idannee AND
tabgenre.idgenre = tab_film_genre.genre
GROUP BY
tabannee.annee, tabfilm.titre
ORDER BY
tabfilm.titre;
Julien.
https://rjuju.github.io/
Hors ligne
Merci, j'ai utilisé string_agg comme vous me l'avez dit et ça marche parfaitement.
Merci beaucoup pour la rapidité et l'efficacité de votre réponse.
Hors ligne
Pages : 1