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 :

Requête SQL - Série d'exercice


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut Requête SQL - Série d'exercice
    Bonjour,

    Je suis entrain de faire une série d'exercice concernant les requêtes SQL provenant d'un bouquin mais je n'ai pas la correction fourni, pouvez vous me dire si mes requêtes sont correct :

    Voici la table :

    Cinéma(idCinema, nom, ville dateOuverture)
    Salle(idSalle, #idCinema, nbPlaces)
    Film(idFilm, titre, dateSortie, duree)
    Projection(#idSalle, #idFilm)


    1) les films et éventuellement les salles dans lesquels ils ont été joués

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT titre, idSalle
    FROM Projection
    2) les films dont la durée dépasse 180 min

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT titre
    FROM Film
    WHERE Film.duree >180
    3) les villes ayant un cinéma

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Ville, nom
    FROM Cinéma
    4) le nombre de salles par nombre de places

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nbPlaces
    FROM Salle
    ORDER BY nbPlaces
    5) Les films n'étant pas projetés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT titre
    FROM Film
    Incomplet

    6) le nombre de place total par cinéma du plus grand au plus petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nbPlaces
    FROM Cinéma, Salle
    WHERE Cinéma.nom = Salle.nbPlaces
    ORDER BY nbPlaces DESC
    7) Les films dont le titre contient 'impsosible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT titre
    FROM Film
    WHERE titre = 'impossible'
    8) Les films ayant été projetés dans une salle d'au moins 300 places

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT titre, idFilm, idSalle
    FROM FILM, Projection
    WHERE Film.nbPlaces <300
    9) Les cinémas ayant ouvert depuis plus d'un an et n'ayant projeté aucun film

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, ville
    FROM Cinéma, Projection
    WHERE Film.dateOuverture > 360 and Projection.idFilm =NULL
    Ensuite je n'ai pas réussi à faire les 3 suivantes :

    10) Pour chaque film dont le titre conteint 'HarryPotter', le nombre de différentes salles ou il a été projeté
    11) les salles appartenant à un cinéma dont la date d'ouverture est postérieure à la date de sortie du film
    12) la plus petite durée de film projetée dans chaque cinéma

    Pouvez-vous m'aider svp ?

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 259
    Par défaut
    Citation Envoyé par SpaceX Voir le message
    1) les films et éventuellement les salles dans lesquels ils ont été joués
    Non.
    titre n'est pas un champ de la table Projection, ta requête ne peut pas être exécutée elle n'est pas correcte.
    Au mieux tu n'obtiendrais pas "les films et éventuellement les salles" mais bien uniquement les films ayant été projetés

    Une piste : LEFT JOIN

    Citation Envoyé par SpaceX Voir le message
    2) les films dont la durée dépasse 180 min
    Oui.

    Citation Envoyé par SpaceX Voir le message
    3) les villes ayant un cinéma
    Oui.

    Citation Envoyé par SpaceX Voir le message
    4) le nombre de salles par nombre de places
    Non.
    Là tu obtiens le détail du nb de places de chacune des salles (sans indication de la salle correspondante d'ailleurs)
    Si j'en crois le libellé que tu donne, il faudra regrouper les salles qui ont le même nombre de places, et indiquer combien il y a de salles de ce groupe là

    Une piste : Sans doute du COUNT et du GROUP BY

    Citation Envoyé par SpaceX Voir le message
    5) Les films n'étant pas projetés
    Bon départ

    Une piste : Les films présents dans la table film, mais absent de la table projection. Plusieurs possibilités, mais ça peut être fait avec une jointure LEFT JOIN

    Citation Envoyé par SpaceX Voir le message
    6) le nombre de place total par cinéma du plus grand au plus petit
    Non, même remarque que pour le 4), la requête est à peine plus complexe, le principe identique, mais ici on compte pas, on additionne
    Par contre, WHERE Cinéma.nom = Salle.nbPlaces, je ne vois pas en quoi le nombre de place de la table salle peut être égal au nom de la table cinema.

    Citation Envoyé par SpaceX Voir le message
    7) Les films dont le titre contient 'impsosible
    Non.
    Là, ça retourne le titre des films dont le titre est exactement "impossible".

    Une piste : ta clause Where est vraiment presque juste

    Citation Envoyé par SpaceX Voir le message
    8) Les films ayant été projetés dans une salle d'au moin 300 places
    Non.
    Mais il y a de l'idée, tu es sur la bonne piste. nb_places n'est pas un champ de la table film. nb_places est bon mais il faut aller le chercher dans la table salle, il faut donc avoir cette table.
    NOTA : au moins 300 veut dire égal ou supérieur à 300

    Citation Envoyé par SpaceX Voir le message
    9) Les cinémas ayant ouvert depuis plus d'un an et n'ayant projeté aucun film
    Non.
    Celle-là est bien plus complexe, déjà pour comprendre ce qui est demandé.
    Ta jointure n'est pas bonne. C'est une jointure implicite, elle implique que les 2 cotés de la jointures renvoient un enregistrement, or tu, justement tu cherche ceux ou le coté droit ne renvoie pas d'enregistrement (Projection.idFilm =NULL)

    Mais, cinéma n'ayant projeté aucun film, cela signifie un cinéma dont aucune de ses salles n'a projeté de film. OU, dit autrement, cinéma dont aucune de ses salles n'apparait dans la table projection.
    Donc perso, j'y verrais même pas de jointure, ici, mais peut-être une clause exists avec une sous requete dans le where

    cinéma ayant ouvert depuis plus d'an, ça veut dire que la date d'ouverture est antérieure à aujourd'hui moins 1 ans

  3. #3
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Merci beaucoup je vais étudier tout ça !

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 16h41
  2. [MySQL-5.6] Requête SQL - Jointure et série de IF un peu lourd
    Par coincoin22 dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/06/2017, 16h31
  3. Exercices requêtes SQL (je coince)
    Par Celsoufre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/02/2014, 12h22
  4. besoin d'aide pour un exercice (requêtes sql)
    Par stabii dans le forum Langage SQL
    Réponses: 15
    Dernier message: 30/01/2011, 01h00
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 19h38

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