Menu

Requête JOIN et JSON [Résolu]

- - Dernière réponse :  greg13 - 6 mars 2019 à 22:40
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
24842
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2019
1883
1
Merci
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)

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 52411 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
0
Merci
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 ?
jordane45
Messages postés
24842
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2019
1883 -
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 ?
jordane45
Messages postés
24842
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2019
1883 > 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
Commenter la réponse de greg13
0
Merci
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.
jordane45
Messages postés
24842
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2019
1883 -
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
jordane45
Messages postés
24842
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2019
1883 > 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 ! :)
Commenter la réponse de greg13