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 :

SQL-Exercice Bloquer. Besoin d'aide s'il vous plait


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut SQL-Exercice Bloquer. Besoin d'aide s'il vous plait
    Bonjour , je suis bloqué a partir du numéro 4 et je dois faire jusqu'au 9
    ce que j'ai fait :
    4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Qte
         From Piece,Livraison
         Where Piece.Pno=Livraison.Pno
         AND  Qte>100;

    5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select Pno,Pnom
       From Piece
       Group By Pnom IN ( Select Pnom
                            From Piece
                            Where Pnom="Dupont";
    6.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Pno,Pnom
       From Piece
       Where Pnom="Dupont"
       Group By Pno;

    7. Je n'arrive pas
    8. Pareil
    9. Aussi.
    Merci pour votre aide !
    Images attachées Images attachées  

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bien sûr, avec les énoncés, ce serait mieux
    (écrit avant édit de l'OP)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai pas compris

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Tant qu'à faire, votre prof aurait pu vous fournir un jeu d'essai un peu plus réaliste :
    - un statut "A EVITER" sera avantageusement remplacé dans la vraie vie, par un CODE statut, pointant sur une table de libellés des différents statuts (avec éventuellement des dates de validité)
    - pour les idenfiants, on utilise en général du type numérique et le plus souvent auto-incrémenté, en tout cas char(2) est insuffisant pour une base de données d'entreprises
    - un poids en integer c'est curieux aussi, les mesures sont en général de type decimal, et toute mesure doit être associée à une unité de mesure (KG, unité, centimètre, seconde, la dizaine, la boite...)
    - même remarque concernant la qté
    - votre prof vous a -t- il appris à coder les jointures par le mot clef "JOIN" ? il semblerait que non

    Votre requête 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Qte
         From Piece,Livraison
         Where Piece.Pno=Livraison.Pno
         AND  Qte>100;
    Devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Select Qte
       From Piece 
       inner join Livraison
         on Piece.Pno = Livraison.Pno
       where Qte>100;
    Vous distinguez ainsi le filtrage (where) de la jointure (join)

    Votre requete 5 est invalide syntaxiquement, et pour répondre, vous devez vous appuyer sur la table des livraison, c'est elle qui possède à la fois le n° de fournisseur et le n° de pièce

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    D'accord et pour les autres exercices ? Et non , on a pas appris la " Join" Pour la jointure juste avec le where avec 2 tables différents.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Votre prof a besoin d'une session de rattrapage alors, il a quelques années de retard en SQL

    voici la solution du 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       select count (*)
       from ville as VI
       where exists 
            (select 1 
             from fournisseur as FO
             where FO.Noville = VI.Noville)
    Pour le reste, je vous recommande la lecture des articles référencés ici :
    http://www.developpez.net/forums/d68...q-langage-sql/

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Mdr , je sais. C'est un prof que je n’apprécie guère. Il m'a mit 6.8 car je le corrigeais à chaque fois et vu que j'ai fait des cours de SQL à une amie elle a fait exactement comme moi au contrôle elle a eu 14. Mais bon, Vous avez pas réussi la 5 , 6 8 et 9 ? . En tous cas , je vous remercie beaucoup !

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pour le 4/, votre requete est presque correcte si ce n'est que ce n'est pas la quantité, mais uniquement le numéro des pièces qui vous est demandé. La jointure sur la table pièces est de fait inutile.

    Pour le 5/, il vous faut une sous requete pour trouver le numéro du fournisseur dupont, utilisée en filtre d'une requête principale pour obtenir le numéro des pièces.

    Pour le 6/, il suffit d'une jointure entre les fournisseurs et les livraisons, avec un filtre sur le nom du fournisseur

    Pour la 8/, il suffit d'une jointure externe entre les villes et les fournisseurs, avec regroupement sur la ville, et un COUNT pour obtenir le nombre de fournisseurs.

    Enfin pour la 9/, même pas besoin de jointure, juste un regroupement sur le numéro de pièce dans la table livraison, une somme sur la quantité, et un HAVING sur un COUNT(*) pour ne retenir que les pièce livrées au moins deux fois.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai du mal a comprendre :/ désolé

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    qu'est ce que vous ne comprenez pas ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Pour l'application. Je sais pas trop quoi faire en fait. C'est la première fois que je touche au SQL.

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Le but de tout exercice est aussi de vous faire chercher par vous même
    Voici un exemple de solution pour le n° 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select LI.PNO
          ,PC.PNOM
    From  Livraison   LI
    inner join piece  PC
       on PC.PNO = LI.PNO
    Where LI.FNO = 
         (SELECT FO.FNO
          from Fournisseur FO
          where upper(FO.FNom)='DUPONT')
    Ce qui est en vert n'est pas mentionné dans votre question, mais lister les fournisseurs sans les noms n'est pas très réaliste (sauf si vous avez appris par cœur les n° des fournisseurs)
    La fonction UPPER sur le nom permet de vous affranchir des problèmes de majuscules/minuscules sur le nom

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai fait exactement comme vous avez fait mais dans le select principale au niveau du Where Pno il y'a un IN No ?

  14. #14
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Clemen931 Voir le message
    J'ai fait exactement comme vous avez fait mais dans le select principale au niveau du Where Pno il y'a un IN No ?
    Il faut mettre IN quand la requête imbriquée produit plusieurs résultats, mais comme ici on recherche une clef unique, on n'aura qu'un seul résultat (voire aucun si l'intégrité de la base n'est pas vérifiée), on peut donc utiliser "=" comme je l'ai fait

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup !

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

Discussions similaires

  1. Besoin d'aide s'il vous plait
    Par stephanie.ben dans le forum Fortran
    Réponses: 1
    Dernier message: 23/01/2012, 09h09
  2. besoin d'aide s'il vous plait
    Par sayah_houssein dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 25/02/2011, 14h01
  3. Besoin d'aide s'il vous plait
    Par miktifo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2008, 22h22
  4. besoin d'aide s'il vous plait
    Par shinchan95'971 dans le forum Flash
    Réponses: 1
    Dernier message: 11/04/2008, 11h46

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