IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Question à propos de deux requêtes


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut Question à propos de deux requêtes
    bonjour;
    je suis débutant en sql et j'ai un code que la prof a ecrit, le schéma de relation est (Film(titre,MeS,Acteur)), le but est de trouver les films avec leur MeS et leurs acteurs dans lesquels joue M-F Pisier(acteur) le code sql que la prof a écrit est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT F2.Titre, F2.MeS, F2.Acteur
    FROM FILM as F1, FILM as F2
    WHERE F1.Titre=F2.Titre AND F1.Acteur='M-F.Pisier'
    mais je pense qu'on peut écrire plus facilement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select titre,MeS
    From Film
    Where Acteur='' M-F.Pisier"
    je voudrais savoir pourquoi elle écrit de la première façon et non de la deuxième façon (est qu'il y a une raison).
    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    mon deuxième problème c'est que la prof a écrit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     select Acteur As Personne fromFilm
    WHERE Titre="marion"
    union SELECT MeS as Personne FROM FILM
    WHERE Titre="Marion"
    ici l'objectif est de trouver les personnes ayant participées au tournage du film Marion. ici on a une autre table en plus de la table film qui est programme(non ciné,titre,horaire)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    j'ai oublier d’écrire mon problème c'est pourquoi elle a renommé acteur en personne et n'a pas utilisé directement l'attribue acteur
    merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Je te conseille de lire les tutoriaux réalisés par SQLPro. Ils sont très bien fait, donc tu y trouveras ton bonheur


    Mais pense à lire aussi les règles de fonctionnement du forum (Quel SGBD utilises-tu ? ....)

    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT F2.Titre, F2.MeS, F2.Acteur
    FROM FILM AS F1, FILM AS F2
    WHERE F1.Titre=F2.Titre AND F1.Acteur='M-F.Pisier'
    Mais pourquoi, la connaissance dans l'éducation nationale s'est-elle arrêtée au XXeme siècle ? Cette écriture des jointures est totalement obsolète !

    Sans description des tables, on ne peut pas dire si ta requête fonctionne (au vu du nom des tables, j'espère que non). La question est-ce que dans la table "Film", le nom des acteurs sont écrits en "clair" ou s'agit-il de la clé créée dans la table "Acteur" ?
    Mais fais attention à la syntaxe !
    WHERE Acteur='' M-F.Pisier". Tu utilises des ' et des "...


    2- Je ne vois qu'une seule table utilisée "Film"
    3 - C'est juste pour que le nom de la colonne soit cohérent avec l’objectif; ce n'est pas forcement des "Acteur" mais ce peut-être aussi des "MeS"
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Film(titre,MeS,Acteur)
    Je suppose que "MeS" veut dire "metteur en scène" ?
    Cette structure fait qu'il ne peut y avoir qu'un seul acteur par film ou alors il y a une grosse erreur de modélisation et la prof aurait besoin de se recycler sur la modélisation des données en plus de se recycler sur le SQL !

    le but est de trouver les films avec leur MeS et leurs acteurs dans lesquels joue M-F Pisier(acteur)
    Si je comprends bien le besoin, il faut trouver tous les acteurs présents au côté de Marie-France Pisier dans les films où elle joue.

    C'est pour ça qu'il faut une auto-jointure. Écrivons juste la requête correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT F2.Titre, F2.MeS, F2.Acteur
    FROM FILM AS F1
    INNER JOIN FILM AS F2 ON F1.Titre=F2.Titre
    WHERE  F1.Acteur = 'M-F.Pisier'
    L'instance F1 de la table sert à sélectionner les films où joue Marie-France Pisier et l'instance F2 sert à récupérer ses collègues acteurs dans ses films.

    Une meilleure structure de données aurait été celle-ci :
    film (flm_id, flm_titre, flm_metteur_en_scene...)
    acteur (act_id, act_nom...)
    act_jouer_film (ajf_id, ajf_film)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Question d'efficacité entre deux requêtes
    Par reezeus dans le forum Langage SQL
    Réponses: 8
    Dernier message: 30/03/2015, 12h19
  2. Deux petites questions à propos de Merise
    Par abdelkaderg54 dans le forum Merise
    Réponses: 17
    Dernier message: 19/11/2009, 12h02
  3. Questions à propos des requêtes olap
    Par bobspike dans le forum Conception/Modélisation
    Réponses: 1
    Dernier message: 25/01/2009, 00h49
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo