Aller au contenu

Mode d'emploi des requêtes imbriquées ?


Sujets conseillés

Posté

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 :)

Posté

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

Posté

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...

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...