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 :

Aide pour Requêtage


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut Aide pour Requêtage
    Bonjour,

    Je dois faire un exercice en base de données pour demain et j'aimerai savoir si mes requêtes sont correctes ?

    J'ai mon MLD qui est le suivant :

    Marin(idMarin, nom, age)
    Bateau(idBateau, nom, nbPassagers)
    Embarque(idMarin, idBateau, destination)




    Avez vous des idées ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Citation Envoyé par treeselectif Voir le message
    Avez vous des idées ?
    Te conseiller un bon cours de SQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par treeselectif Voir le message
    Les différents nombres de passagers des bateaux
    NON
    L'âge des marins dont le nom commence et finir par B
    NON
    les bateaux pouvant embarquer entre 200 et 300 personnes
    Peut être...
    Moyenne d'êge des marins partis à Sydney
    NON

    Avez vous des idées ?
    Relire vos cours, évitez de dormir en classe, s'offrir un bon livre sur SQL, faire des exercices....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    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
    Citation Envoyé par treeselectif Voir le message
    J'ai mon MLD qui est le suivant :

    Marin(idMarin, nom, age)
    Bateau(idBateau, nom, nbPassagers)
    Embarque(idMarin, idBateau, destination)
    Une remarque générale sur vos requêtes : Pourquoi utiliser un alias "r" alors que vous n'avez qu'une seule table ? Les alias de tables sont utiles seulement lorsqu'il y a plusieurs tables dans la requête.


    Les différents nombres de passagers des bateaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT r.nbPassagers FROM Bateau r
    Là vous allez obtenir une colonne de nombre mais vous ne saurez pas combien de passagers peut embarquer le bateau "Lord of the seas".
    => Il manque une colonne dans le SELECT.

    L'âge des marins dont le nom commence et finir par B


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT r.Marin 
    FROM Marin r
    WHERE r.nom LIKE '%B%'
    On vous demande l'âge et vous sélectionnez le nom de la table !
    On vous demande les marins dont le nom commence et finit par B (pas banal, au passage ! Y a t-il un marin nommé Baobab ? ) et vous allez obtenir les marins dont le nom contient "B".
    => Requête à revoir complètement.


    les bateaux pouvant embarquer entre 200 et 300 personnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT r.nbPassagers
    FROM Bateau r
    WHERE r.unitCost BETWEEN 200 AND 300
    On vous demande les bateaux et vous sélectionnez le nombre de passagers.
    Et d'où vient cette colonne "unitCost" qui ne figure pas dans votre modèle ?
    => Requête à revoir complètement.

    les marins les plus âgés

    ???
    Ça se complique et vu les piètres performances précédentes, ça ne m'étonne pas que vous n'y arriviez pas !
    => Commencez par faire une requête qui cherche l'âge maxi dans la table des marins puis faites une requête qui sélectionne les marins qui ont cet âge (donc il faut une jointure et une sous-requête récupérant l'âge maxi).

    pour chaque bateau, le nombre de marins ayant embarqué

    ???
    => Il faut compter (COUNT) les marins par bateau dans la table Embarque et grouper (GROUP BY) ça par bateau. Avec une jointure sur la table Bateau pour avoir le nom des bateaux, ce sera plus propre.

    Moyenne d'êge des marins partis à Sydney

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT r.age ,AVG(r.????)
    FROM Bateau r
    GROUP BY r.age
    Là vous sélectionnez chaque âge. Pas étonnant que vous ne sachiez pas sur quoi appliquer la fonction AVG !
    => Ben justement sur la colonne age bien sûr !
    Par contre, l'âge n'est pas dans la table Bateau mais dans la table Marin. Il faut donc arriver à joindre les bateaux et les marins. Et comme on veut ceux qui sont partis à Sydney, il faut aussi utiliser la table Embarque.


    Les différents nombres de passagers inférieures au nombre de passagers des bateaux embarquant au moins 10 marins


    ???
    Là ça se complique encore plus !
    => Décomposez le besoin pour y arriver :
    - Requête pour sélectionner les Bateaux embarquant au moins 10 marins avec le nombre de passagers de ces bateaux ;
    - Modifiez la requête pour avoir le plus petit nombre de passagers de ces bateaux ;
    - Requête pour avoir les bateaux et leur nombre de passagers ;
    - Joignez les deux requêtes pour ne retenir que les bateaux qui ont un nombre de passagers inférieur à celui qui a le moins de passager parmi ceux qui embarquent au moins 10 marins.

    Les marins ayant été à destination de Dakar et ceux à destination d'abidjan


    ???
    Ça peut se comprendre de deux manières :
    1) Marins qui sont allés à Dakar ET à Abidjan ;
    2) Marins qui sont allés à Dakar OU à Abidjan ;

    Je vous laisse y réfléchir. Vous avez du boulot !
    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. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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