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 :

requetes SQL BD


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut requetes SQL BD
    Soit la base suivante :
    Rayon(NomR, etage)
    Article (Reference,type,description, couleur)
    Disponibilite(NomR,reference,quantite)
    Employe(Numero,Nom,Salaire,Rayon,Responsable)

    exprimer en SQL les requetes Suivantes :

    1- Références des articles de types "electromenager" en rayon au second etage;

    2- Nom des employés travaillant dans un rayon proposant des articles de type jouet pour une quantité totale supérieure à 1000;


    3- Nom des des employés qui gagnent plus que leur responsable;

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Il s'agit visiblement d'un exercice scolaire, donc vous donner une solution "clefs en mains" ne serait pas vous rendre service
    Publiez les requêtes que vous avez essayées et les messages d'erreur éventuels, à partir de là nous pourrons vous aider

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Proposition de reponse
    Corriger SVP


    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Reference,type,etage
    From Article,Rayon
    Where Article.type ="electromenager"  and Rayon.etage="2"

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select Nom, Rayon
    From Employe
    Where 
                 ( Select NomR,quantite   
                   From Disponibilite 
                   Where Employe.Rayon = NomR     And quantite >=1000   )
        And (Select type  From Article Where type ="Jouet" )
    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select Nom, salaire, responsable
    From Employe
    Where  ( Select Nom,salaire    From Employe      Where Employe.responsable = Nom      And Employe.Salaire > Salaire  )

  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
    Soit la base suivante :
    Rayon(NomR, etage)
    Article (Reference,type,description, couleur)
    Disponibilite(NomR,reference,quantite)
    Employe(Numero,Nom,Salaire,Rayon,Responsable)

    1- Références des articles de types "electromenager" en rayon au second etage;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Reference,type,etage
    From Article,Rayon
    Where Article.type ="electromenager"  and Rayon.etage="2"
    1) Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN ; il serait temps de s'y mettre !
    D'ailleurs, là, vous ne faites pas une jointure mais un produit cartésien des deux tables puisque vous n'avez pas de condition de jointure. Vous allez donc obtenir tous les articles de type électroménager couplés avec tous les rayons du second étage mais rien ne dit que la machine à laver A1 est effectivement rangée dans un rayon du second étage.

    2) Un code indenté et aéré est plus agréable à lire et à déboguer.

    3) Comme l'article n'est pas directement associé au rayon, il faut chercher la table supplémentaire qui permettra de savoir si l'article A1 est bien disponible dans un rayon du second étage.
    Je vous laisse chercher ça.


    2- Nom des employés travaillant dans un rayon proposant des articles de type jouet pour une quantité totale supérieure à 1000;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select Nom, Rayon
    From Employe
    Where 
                 ( Select NomR,quantite   
                   From Disponibilite 
                   Where Employe.Rayon = NomR     And quantite >=1000   )
        And (Select type  From Article Where type ="Jouet" )
    4) Même si ce n'est pas idiot de le donner en résultat, on ne vous demande pas le nom du rayon.

    5) Au lieu de requêtes corrélées, essayez les jointures.

    3- Nom des des employés qui gagnent plus que leur responsable;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select Nom, salaire, responsable
    From Employe
    Where  ( Select Nom,salaire    From Employe      Where Employe.responsable = Nom      And Employe.Salaire > Salaire  )
    6) Franchement, avec la condition Employe.Salaire > Salaire, vous croyez vraiment que votre requête va vous retourner une ligne de résultat ?


    Conseils :
    7) Révisez vos cours

    8) Montez-vous une petite base de données MySQL (par exemple) et implémentez la BDD puis essayez vos requêtes. Vous comprendrez ainsi qu'aucune de vos requêtes ne donnera le résultat attendu.
    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 !

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    1- Références des articles de types "electromenager" en rayon au second etage;
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Reference,type,etage
    From Article,Rayon
    Where Article.type ="electromenager"  and Rayon.etage="2"
    la table Article est reliée par la table Rayon par la table association Disponibilite c'est pourquoi j'ai établi cette requete comme ça.

    2- Nom des employés travaillant dans un rayon proposant des articles de type jouet pour une quantité totale supérieure à 1000;
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Nom
    From Employe
    Where rayon in
                 ( Select quantite,type   
                   From Disponibilite ,Article
                   Where Disponibilite.quantite > 1000    And Article.type ="jouet"  )

    3- Nom des des employés qui gagnent plus que leur responsable;

    il n'y a pas de table responsable donc je ne pense pas que cette requetes sera possible

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je vous donne la solution pour le premier exercice car vous partez visiblement de très loin !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select AR.reference
    from article as AR
    inner join disponibilite as DI
       on DI.reference = AR.reference
    inner join Rayon as RA
       on RA.NomR = DI.NomR
    where RA.etage=2
      and AR.type = 'electromenager'
    Notez comment sont construites les jointures : opérateur JOINassocié à des critères de jointure ON.
    Notez également l'utilisation d'alias (AR, DI, RA) qui permettent de désigner des tables ou vues plus facilement
    Il faut utiliser la table "disponibilité" car c'est cette table qui contient à la fois un attribut de la table article (reference) et un attribut de la table rayon (NomR)
    On passe donc par cette table pour aller de Article vers Rayon afin de vérifier qu'il s'agit bien d'un rayon du deuxième étage comme demandé

    Inspirez vous de cette méthode pour les autres exercices

    Et il faut absolument que vous lisiez vos cours, il existe également des tuto sur ce forum qui peuvent vous aider

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par imran kessi Voir le message
    3- Nom des des employés qui gagnent plus que leur responsable;

    il n'y a pas de table responsable donc je ne pense pas que cette requetes sera possible
    Il n'y a pas de table responsable, c'est tout à fait normal, un responsable est un employé
    Si vous aviez examiné la table des employés avec un peu d'attention, vous auriez probablement trouvé un indice qui vous aurait mis sur la voie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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