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 :

Où sont mes fautes ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut Où sont mes fautes ?
    *** Bonjour à tous, ***

    voila un exercice que j'ai essayer de le faire en utilisant mysql mais il ya des fautes que je peux pas les corriger

    Soit le schéma textuel de la base de données gestion_voyages
    Voyageur (num_passp, nom, prenom, adr, date_nais)
    Voyage (num_voy, ville_dest, date_dep, date_arr, tarif)
    Réservation (num_voy#, num_passp#, confirmation)

    Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout" et qui sont originaire de "Sfax"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num_passp, nom, prenom
    FROM réservation r, voyage v, voyageur vr
    WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest =  "beyrout" AND adr =  "sfax";
    1) Ecrire le code SQL de création de la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create table Voyageur (num_passp int(11) primary key ,
    nom varchar (20) not null , prenom varchar (20) not null, adr  varchar(45), date_nais date );
     
    CREATE  TABLE Voyage( num_voy int(10) PRIMARY  KEY CHECK (num_voy > 100 ),
    ville_dest varchar( 10  )  NOT  NULL ,
    date_dep date NOT  NULL ,
    date_arr date NOT  NULL ,
    tarif float   );
     
    CREATE  TABLE Réservation( num_voy int( 11  )  REFERENCES voyahe( num_voy )  ON  DELETE  CASCADE  ON  UPDATE  CASCADE ,
    num_passp int( 10  )  REFERENCES voyageur ON  DELETE  CASCADE  ON  UPDATE  CASCADE ,
    confirmation int( 1  )  NOT  NULL  );

    2) Pour chaque table insérer les enregistrements suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO `voyageur` ( `num_passp` , `nom` , `prenom` , `adr` , `date_nais` )
    VALUES (
    '123457 ', 'Ben Salah', 'Sana', 'Tunis ', '23/07/1987') ;
    voici les tables
    table voyageur
    Num_pass Nom Prénom Adr Date_nais
    110045 Tounsi Kamel Sfax 11/12/1985
    123457 Ben Salah Sana Tunis 23/07/1987
    109876 Omri Mohsen Sousse
    213456 Younes Youssef Sfax 13/11/1978
    100655 Benzarti Wafa Sfax 07/05/1980
    108987 Sallemi Moussa Tunis
    200087 Jilani Kaouther Sfax 17/01/1970
    137689 Yahya Mouna Nabeul
    111235 Blel Hosni Mahdia 21/11/1988
    table voyage
    Num_voy Ville_dest Date_dep Date_arr Tarif
    1001 Tripoli 13/02/2009 13/02/2009 300
    1002 Beyrout 25/03/2009 25/03/2009 600
    1003 Caire 13/05/2009 16/05/2009 400
    table réservation
    Num_voy Num_pass confirmation
    1001 110045 1
    1001 123457 1
    1001 109876 0
    1002 200087 1
    1002 108987 1
    1002 213456 0
    1002 110045 1
    1003 100655 1
    1003 137689 0
    1003 111235 0
    3) Exprimer en SQL les requêtes suivantes :
    Projection :
    R1 : lister la table voyageur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  *
      FROM voyageur;
    R2 : Afficher le prénom, nom et la date de naissance de tout les voyageurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom , prenom ,date_nais  FROM voyageur;
    Restriction :
    R3 : Afficher la liste des voyageurs dont l’adresse est Sfax, trier la liste par ordre croissant de Num passeport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from voyageur where adr = "sfax" order by num_passp asc ;
    R4 : Afficher la liste des voyageurs dont l’age >25, trier la liste par ordre décroissant des date de naissance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select *
             From voyageur
             Where year(current_date()) -year(date_nais )>25
             Order by date_nais Desc;
    R5 : Afficher les noms, prénom et adresses des voyageurs qui sont originaires de (Tunis, Sfax, Sousse)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select nom , prenom  , adr from voyageur where adr = "sfax" or adr = "tunis" or adr = "sousse"  ;
    Jointure :
    R6 : afficher la liste des voyageurs qui ont réservé pour un voyage à la ville de "Tripoli"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT num_passp
    FROM réservation r, voyage v
    WHERE r.num_voy = v.num_voy AND  ville_dest = "tripoli";
    SELECT  *
    FROM réservation r, voyage v,  voyageur vr
    WHERE r.num_voy = v.num_voy AND r.num_passp = vr.num_passp AND ville_dest like   "tripoli";
    Resultat ne s’affiche pas
    R7 : Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num_passp, nom, prenom
    FROM réservation r, voyage v, voyageur vr
    WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest   like"beyrout";
    (fausse et je sais pas pourquoi )


    R8 : Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout" et qui sont originaire de "Sfax"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT num_passp, nom, prenom
    FROM réservation r, voyage v, voyageur vr
    WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest =  "beyrout" AND adr =  "sfax";
    (fausse et je sais pas pourquoi )

    R9 : Afficher la liste de voyageurs qui ont confirmé leurs voyages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  *
    FROM réservation r,  voyageur vr
    WHERE r.num_passp = vr.num_passp AND confirmation = 1;
    Utilisation des fonctions :
    R10 : Afficher la date de naissance du plus vieux voyageur et celle du plus jeune.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT max( date_nais )  ,   min( date_nais )
    FROM voyageur;
    (fausse et je sais pas pourquoi )

    R11 : Afficher le nombre des voyageurs qui ont réservé pour le voyage de "Caire"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count (*)  FROM  réservation r , voyage v   WHERE r.num_voy = v.num_voy and ville_dest = "caire";
    (fausse et je sais pas pourquoi )

    R12 : Afficher la somme des tarifs ainsi que le nombre de voyageurs qui ont confirmé leur voyage dont le num est 1001.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT sum( tarif ) , count(  *  )
    FROM  réservation r , voyage v
    WHERE r.num_voy = v.num_voy = 1001 ;
    (fausse et je sais pas pourquoi )

    R13 : Afficher la liste des voyageurs qui ont l’age >25.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select *
             From voyageur
             Where year(current_date()) -year(date_nais )>25 ;
    Auto jointure :
    R14 : afficher la liste des voyageurs dont l’age est inférieur à celui du voyageur dont le num de passeport est "213456"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from voyageur where  date_nais < ( select date_nais from voyageur where num_passp = 213456) ;
    (fausse et je sais pas pourquoi )
    R15 : Afficher les noms et les prénoms des voyageurs ayant la même adresse du voyageur dont le nom est "Benzarti"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select nom, prenom from voyageur v, voyageur vr  where v.num_passp= vr.num_passp and adr  in (select adr from voyageur where nom = "benzarti") ;
    (fausse et je sais pas pourquoi )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, prenom
    FROM voyageur v, voyageur vr
    WHERE v.adr = vr.adr AND vr.nom =  "benzarti";
    (fausse et je sais pas pourquoi )

    *** Merci. ***

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    Bonjour,

    Si il y a des erreurs (j'ai pas pu regarder, trop touffu), merci d'indiquer le type d'erreur retourné ou indiquer pourquoi tu la considères comme en erreur.

    cordialement
    Pinocchio

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 818
    Billets dans le blog
    14
    Par défaut
    Voilà, ça devrait déjà être un peu plus clair !

    Apparemment, encore une école qui retarde de 20 ans sur les jointures !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  4. #4
    Membre actif
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut merci vous êtes trés gentil
    oui c'est notre cours on travail comme ça au lycée et les nouveaus jointures sont hors programmes
    mais s'il vous plait j'ai besoin de la correction

  5. #5
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Premier élément qui te permettra de corriger quelques fautes :
    Les chaînes de caractères doivent être entourée quotes simples (') et non doubles (").
    Par ailleur, fait bien attention à respecter la casse quand tu écris un test :
    'A' ce n'est pas la même chose que 'a'
    ('Tripoli' différent de 'tripoli')
    Sinon, quand tu veux l'égalité exacte, pas besoin de LIKE, tu peux prendre =

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Après, je pense qu'il va falloir trouver la personne (prof ou autre ?) qui te dit que tes réponses sont fausses.

    Car sur l'exemple suivant, soit ta réponse est bonne, soit la question est mal formulée à mon sens (voulait-il deux lignes distinctes ? C'est moi qui comprend pas le concept d'âge et de date de naissance ?) :
    Utilisation des fonctions :
    R10 : Afficher la date de naissance du plus vieux voyageur et celle du plus jeune.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT max( date_nais )  ,   min( date_nais )
    FROM voyageur;
    Ca va être dur de t'aider plus sur ce genre de points...

    [EDIT] au temps pour moi pour le coup du plus jeune / plus vieux, cf la réponse d'asmduty !

  7. #7
    Membre actif
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2012
    Messages : 11
    Par défaut
    Voila a cause de votre aide et votre recommandations j'ai trouver des solutions a mes requêtes et ça marché très bien
    ********Merci à une autre fois***************

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

Discussions similaires

  1. Ou sont mes enregistrements à partir de 8126 ?
    Par AIexis dans le forum Requêtes
    Réponses: 7
    Dernier message: 30/01/2006, 14h03
  2. [VB.net] Où sont mes contrôles ?
    Par waici dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/01/2006, 09h15
  3. [MFC] Ou sont mes boutons de toolbar?
    Par foxblue dans le forum MFC
    Réponses: 3
    Dernier message: 08/09/2005, 14h42
  4. URPMI - Où sont mes programmes ?
    Par Dnx dans le forum Mandriva / Mageia
    Réponses: 2
    Dernier message: 25/09/2004, 21h57

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