Requête JOIN et JSON

Résolu
greg13 -  
 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
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
greg13
 
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 ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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...
0
greg13
 
ha seulement 2 colonne et autant de ligne que j'ai de média par playlist
0
greg13
 
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 ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > greg13
 
INSERT INTO tatable (id_playlist, id_media ) VALUES
(1,1),
(1,2),
(1,5)

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

merci encore
0
greg13
 
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.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Avec une jointure.
Par exemple :
SELECT *
FROM tbl_medias M
LEFT JOIN tbl_playlist P  ON P.id = M.id_playlist
0
greg13
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > greg13
 
Tu peux mettre le where directement pourquoi avoir utilisé un sous select ?
0
greg13
 
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 ! :)
0