Requête JOIN et JSON [Résolu/Fermé]

Signaler
-
 greg13 -
Bonjour a tous, voila je suis sur un petit projet et autant dire que je suis débutant en html, php, JS, CSS et surtout en Postgres ou je galère avec une query plus complexe d'ou ma venue ici pour demander de l'aide ^^.

Voila je vous explique, j'ai 2 tables une nommées "medias" et l'autre "playlist".
La table "medias" contient les colonnes suivante :
id  --  filepath -- type  --  height  --  width

et une table "playlist" avec ces colonnes :
id  --  screen  --  media


voila pour les 2 tables et en gros mes écrans doivent faire une requête sur playlist pour récupérer les médias (playlist>media) qu'ils ont a afficher par rapport a leur id (playlist > screen) . bien sur chaque playlist est unique est pointes vers des médias différents mais qui peuvent avoir des médias en commun.

du coup ma colonne média dans playlist et un genre de JSON simple (déclaré en jsonb) qui contient les ID des média du genre :
["10","52", "32","18"]


et je cherche a faire une requête avec un join qui me récupère tout les filepath, type, height et width
pour chaque id de média dans mon json de la playlist. donc si vous pouvez me donnée un coups de main
car je sais faire des requette avec des join simple mais avec le json au milieux ...

noté que rien est fixé je peut changer de type de donnée et les données que j'envoie mais ce json me permet en plus de pouvoir remonter les données dans un "select > option" de mon html avec un peut de JS (j'utilise du VueJS et travail beaucoup sur le dynamique avec de l'ajax).


j’espère avoir était suffisamment claire ^^
par avance merci
bye

Configuration: Windows / Chrome 72.0.3626.119

3 réponses

Messages postés
29168
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 août 2020
2 674
Bonjour,

Lorsque l'on a besoin d'effectuer des requêtes sur des données... on ne les stocke pas sous forme sérialisée ou json ....
Vu la structure de ce que tu souhaites stocker en BDD et requêter... le plus propre serait de faire une table d'association playlist_media avec les colonnes (id_playlist, id_media)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57064 internautes nous ont dit merci ce mois-ci

Merci pour la réponse, mais vue qu'il peut y avoir entre 1 et 100 media par playlist ça fonctionne comment ?


ha je viens de comprendre mais ça risque pas d’être lourd un autre table avec des données déjà présente ailleurs ?
Messages postés
29168
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 août 2020
2 674
ce n'est qu'une table d'association.....(de relation n<-->n )
1 Média peut être associé à N playlistes
1 Playliste peut contenir de 0 à N médias
C'est le meilleur moyen de le gérer.... surtout pour les requêtes...
ha seulement 2 colonne et autant de ligne que j'ai de média par playlist
par contre question annexe il y a un moyen de rajouter plusieurs ligne avec un INSERT ? ou je fait une querry avec de multiple insert ?
Messages postés
29168
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 août 2020
2 674 > greg13
INSERT INTO tatable (id_playlist, id_media ) VALUES
(1,1),
(1,2),
(1,5)

etc...
(x,n);
merci beaucoup je vais faire ça

merci encore
Bonjour , ^^
bon j'ai enfin mis en place la table d’association et j'ai une table dans le genre :

playlist_id media_id
20  66
20  65
21  63
21  62
21  61
21  57
21  56
21  55


j'ai donc mon id de ma playlist, comment récupérer tout les informations de ma table medias depuis cette table ?


Merci.
Messages postés
29168
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 août 2020
2 674
Avec une jointure.
Par exemple :
SELECT *
FROM tbl_medias M
LEFT JOIN tbl_playlist P  ON P.id = M.id_playlist
Merci du coup j'ai obtenue une table jointe de tout sur le quelle j'ai fait un select where sur ce résultat :
SELECT * FROM (SELECT * FROM medias M
LEFT JOIN medias_playlist P ON P.media_id = m.id) AS m WHERE playlist_id=21


c'est bon ou j'ai tout faux ?

merci
Messages postés
29168
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 août 2020
2 674 > greg13
Tu peux mettre le where directement pourquoi avoir utilisé un sous select ?
ha oui, j'avais essayer mais j'avais une erreur du coups j'ai cherché un autre moyen mais effectivement ça fonctionne merci beaucoup je pensais pas que l'on pouvais faire un WHERE sur une résultat générés avec un JOIN. par contre j'ai un peut de mal a comprendre les notions des JOIN mais bon ^^

En tout cas merci beaucoup tu ma vraiment bien aider ! :)