Mr_Big_Stuff Posté 20 Septembre 2007 Posté 20 Septembre 2007 Salut à tous! Je suis nouveau sur le forum, j'espére pouvoir échanger des infos intéressantes avec vous... Voila mon problème, je ne me rappelle plus vraiment mes cours SQL d'iut, voila ce que je voudrais faire: J'ai 2 tables: CATEGORIE | 1 | Cat1 | | 2 | Cat2 | | 3 | Cat3 | ... VIDEO | 1 | Vid1 | :1:24:45: | | 2 | Vid2 | :4:23: | | 3 | Vid3 |:9:12:23:31:| ... Le 3ème champs de la table vidéo (liste_categorie) étant la liste des id des catégories aux quelles appartiennent les vidéos. Pour afficher par exemple les vidéo en fonction de la catégorie 24 je fais SELECT * FROM video WHERE liste_categorie LIKE "%:24:%" Par contre j'aimerai pouvoir lister toutes les catégories et afficher en même temps le nombre de vidéo leur appartenant, ce qui donnerait à l'affichage: Cat1 (total vidéos: 15) Cat2 (total vidéos: 3) Cat3 (total vidéos: 21) ... Mais je ne sais pas le faire en une seule requête !!!! Merci de votre aide
marcb Posté 20 Septembre 2007 Posté 20 Septembre 2007 Bonsoir, La structure des tables n'est pas bonne. Tu devrais avoir : CATEGORIE (id_categorie, libelle_categorie) | 1 | Cat1 | | 2 | Cat2 | | 3 | Cat3 | ... VIDEO (id_video, libelle_video) | 1 | Vid1 | | 2 | Vid2 | | 3 | Vid3 | ... VIDEO_CATEGORIE (id_video, id_categorie) |1|1| |1|24| |1|45| |2|4| |2|23| |3|9] |3|12| |3|23| |3|31| ... La table VIDEO_CATEGORIE fait le lien entre les id des deux tables. Ainsi pour avoir le nombre de vidéo par catégorie tu fais : select id_categorie, count(*) from video_categorie group by id_categorie; Mon conseil est donc de revoir ton modèle de données. M
Mr_Big_Stuff Posté 21 Septembre 2007 Auteur Posté 21 Septembre 2007 Merci pour ta réponse, mais bon ma base de donnée est assez énorme et tout mon site est fait sur ce modéle, je ne peux pas tout refaire. Je suis quand même certain qu'il y a une solution en gardant cette BDD, en fesant des requêtes imbriquées il me semble mais je ne me rapéle plus du tout comment...
marcb Posté 21 Septembre 2007 Posté 21 Septembre 2007 Bonjour, ma base de donnée est assez énorme Raison de plus pour avoir un modèle structuré ! Et optimisé pour tes requêtes. Tu en vois déjà les limites. Et plus tu changes tôt, moins le travail est important. Je suis quand même certain qu'il y a une solution en gardant cette BDD, en fesant des requétes imbriquées il me semble mais je ne me rapéle plus du tout comment... Avec une requête SQL, je ne vois pas comment faire. Mais c'est possible de coder ça dans une procédure stockée ou dans un script php. En gros, il te faut un script qui parcourt l'ensemble de tes vidéos et qui construit un tableau au fur et à mesure (voir la fonction explode). Ensuite tu peux afficher le tableau. Maintenant si tu es prêt à faire un script php, autant en faire un qui te transforme ta structure pourrie en structure propre. Comme ça toutes tes requêtes ultérieures seront simples ! M
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant