Bonsoir.
C'est tout a fait possible, je te recommande de visualiser par exemple Tutoriel Vidéo Mysql » Les jointures MySQL.
Bonjour,
J'ai l'intention de créer un site (en local) qui me permettra de regrouper la liste des films que je possède dans ma vidéothèque.
J'hésite encore entre récupérer les informations via IMDB ou allociné. Mais mon problème se trouve plutôt au niveau de "l'architecture" de ma base de donnée.
Pour stocker le titre, le synopsis etc.. je pense que les stocker directement dans ma table movies est la bonne façon de faire.
Par contre, un film peut avoir plusieurs :
- Nationalités
- Genres
- Acteurs
Du coup je pensais crée les tables :
- nationalities (avec les champs : id, name)
- genres (avec les champs : id, name)
- actors (avec les champs : id, firstname, lastname, etc...)
Ensuite créer des tables pour pouvoir relier les tables ci-dessus à mes films :
- movie_has_nationalities (id, movie_id, nationality_id)
- movie_has_genres (id, movie_id, genre_id)
- movie_has_actors (id, movie_id, actor_id)
Et c'est la ou je suis complètement perdue car je ne sais pas si c'est une bonne façon de faire et je ne sais pas non plus si c'est possible de récupérer grâce à une requête toutes les informations d'un coup et de les retourner d'un tableau du type :
Ou suis-je obligés de faire plusieurs requêtes ? Je sais faire des JOINTURE simple du style relier une catégorie (une seule) à un film mais je ne sais pas si c'est possible avec plusieurs valeurs :(
Merci d'avance pour votre aide ;)
11 réponses
Bonjour Lartak et merci de ta réponse :)
J'ai créer les tables et essayer de faire une requete pour le moment en reliant seulement les genres et les nationalités car c'est difficile pour moi :
Cette requête me retourne les lignes de cette façon :
Mais du coup les genres et les nationalités sont retourné 2 fois, est ce que je m'y prends bien ? Et si oui alors comment évité de repété les champs dejà retourné ?
As-tu essaye de faire un
? Par contre je pense qu'il faut utiliser une fonction d'aggregat pour compter le nombres d'occurences dans chaque groupe de maniere a ce qu'il te retourne un resultat correct :)
Je me permet de up le sujet, quelqu'un peut m'aider ?
Bonsoir, si tu veux éviter les répétitions il peut être utile de faire usage de "GROUP BY genres" par exemple.
Lorsque que je fais un group by avec genres ça me retourne :
Du coup c'est bon pour les genres mais les nationalités, j'ai 2 fois Américaine alors que je voudrais (pour cet exemple) Américaine et Française. J'ai essayé d'ajouté nationalities dans mon group by mais plus rien n'est retourné :(
Merci de votre aide :)
Oui j'ai bien essayé d'ajouté le group by que tu proposes :) (par contre dans mon précédent post je disais que sa ne retourné rien alors que si)
Ca me retourne :
Une fonction aggregat qu'est ce que c'est ? C'est les fonctions du type count(), max() etc.. ? Si oui alors j'ai essayé ceci mais je ne sais pas du tout si je l'utilise correctement
Ca me retourne :
Merci pour votre aide :)
As-tu essaye
Je viens d'essayé est j'obtiens l'erreur : #1054 - Champ 'g' inconnu dans group statement mais c'est normal puisque g et n son les alias de mes tables genres, et nationalities non ?
Bonjour,
voici la requete à utiliser je pense :
ca te fera une seule valeur avec tous les genres séparés par des virgules et toutes les nationalités IDEM.
En épérant que ca t'aide.
Bonjour
J'avais essayé quelques choses du genre mais j'ai du faire des erreurs quelques part car je n'obtenais pas le même resultat que ta requete.
Un grand merci pour ton aide (ou comme j'ai copier coller, merci plutôt pour la solution) :)