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

MS SQL Server Discussion :

Exercices sql server


Sujet :

MS SQL Server

Vue hybride

fasyr Exercices sql server 21/03/2009, 15h07
fasyr ex2 21/03/2009, 16h34
Judah Bonjour, 1) Il me semble... 21/03/2009, 19h08
fasyr ex3 25/03/2009, 20h10
fasyr ex4 25/03/2009, 23h58
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut Exercices sql server
    Bonjour, je fait des exo en ce moment pourriez vous me dire si se que je fais est juste:

    énoncé:
    On considère la bd qui représente des réservation de vols:
    VOL(Numvol, VilleDep, VilleDest, Compagnie)
    DEPART(NumDep, Numvol, DateDep, NbDisp)
    FREQUENCE(Numvol, jour)
    RESERVATION(Client, NumDep, Npostes)

    *Jour indique les jours de la semaine (1 = lundi, 7=dimanche et 10 =tous les jours)

    1) Trouver les compagnies qui effectuent à la fois des vols a destination e PAris et a destination de lisbone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select Compagnie from VOL
    where villeDest ='Paris' and Compagnie in (select Compagnie from VOL where villeDest ='Lisbone';
    2)Trouver les clients qui n'ont de reservation qu au départ de paris(cad les clients dont toutes les résa sont au départs de paris)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select client from RESERVATION 
    where Client in (select RESERVATION.client from RESERVATION 
    join (DEPART on RESERVATION.NumDep = DEPART.NumDep) 
    join VOL on DEPART.Numvol = VOL.Numvol ) 
    where VilleDep = 'Paris'
    and client not in (select RESERVATION.client from RESERVATION 
    join (DEPART on RESERVATION.NumDep = DEPART.NumDep) 
    join VOL on DEPART.Numvol = VOL.Numvol)
    where VilleDep !='Paris';
    3)trouver les numéros de vols au départ de paris dont la fréquence hebdomadaire est journalière ou au moins deux fois par semaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select Numvol, count(jour) from FREQUENCE join VOL on FREQUENCE.Numvol = VOL.Numvol
    where VilleDep = 'Paris'
    group by Numvol
    having count(jour) > 2;
    Merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut ex2
    ex2
    creer une vue VolsDestParis des vols a destination de paris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create view VolsDestParis (numeroDeVol, VilleDepart, VilleDestination, CompagnieAvion as
    select Numvol, VilleDep, villeDest, compagnie from VOL
    where villeDest = 'Paris';
    inserer dans la vue le vol : Numvol = KL789, VilleDep = Olso, villeDest = Malaga, Compagnie = KLM:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into VolsDestParis (numeroDeVol, VilleDepart, VilleDestination, CompagnieAvion) values ('KL789', 'Olso', 'Malaga', 'KLM')
    Sans check Option:
    Le tuple est insere ou pas dans la vue? -->Non
    Le tuple est insere dans la table VOL? -->Oui
    Le tuple apparait ou pas dans la vue -->Non

    Avec check Option:
    Le tuple est insere ou pas dans la vue? -->Non
    Le tuple est insere dans la table VOL? -->Non
    Le tuple apparait ou pas dans la vue -->Non

    Donner l'instrution SQL pour creer la vue ReservationSynth contennat le nom du client, le numero de vol, la ville de départ, la ville de destibnation et la date de depart.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create view ReservationSynth (nom, numero_vol, ville_de_dep, ville_de dest, date_depart ) as
    select RESERVATION.client, VOL.NumVol, VOL.VilleDep, VOL.VilleDest, DEPART.DateDep from (RESERVATION join DEPART on RESERVATION.NumDep = DEPART.NumDep) join VOL on DEPART.NumVol = VOL.NumVol
    whith check option
    Peut on supprimer des données de la vue?
    Non car la vue utilise plusieurs tables.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 50
    Par défaut
    Bonjour,

    1) Il me semble utile d'éliminer les doublons, et pourquoi s'embêter avec une sous-requête inutile ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Compagnie FROM VOL WHERE VilleDest = 'Paris' OR VilleDest = 'Lisbone'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Compagnie FROM VOL WHERE VilleDest IN ('Paris', 'Lisbone')

    A prendre en compte également pour tes autres requêtes.

    Par exemple pour 2) ; tu peux sauf erreur te contenter de sélectionner (et avec un DISTINCT) tous les clients qui ne sont pas dans la liste des clients ayant un départ <> Paris.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut ex3
    Ecrire une procedure ayant en parametre une ville de depart qui affiche:
    1/les numeros de vol partant de cette ville
    2/la ville de destination
    3/Les jours de la semaine indiqué par leur noms

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    create procedure proc (@villeDeDepart char) as
     
    if exists(select * from VOL where VilleDep = @villeDeDepart )
    begin
    select VOL.NumVol, VOL.VilleDest, DEPART.jour from VOL join DEPART on VOL.Numvol = DEPART.Numvol
    and select case 
    when jour = 1 then 'Lundi'
    when jour = 2 then 'Mardi'
    when jour = 3 then 'Mercredi'
    when jour = 4 then 'jeudi'
    when jour = 5 then 'vendredi'
    when jour = 6 then 'samedi'
    when jour = 7 then 'dimanche'
    end
    else
    begin
    print('ville inexistante')
    end

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut ex4
    écrire un trigger qui met a jour le nombre de postes disponible sur un vol lorsqu'un réservation est ajoutée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create trigger poste_dispo on RESERVATION for insert as
    declare @resa int
    declare @dispo int
    select @resa = Nposte from inserted
    select @dispo = NbDisp from depart
    update depart set NbDisp = @dispo -@resa

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 91
    Par défaut
    Bonjour,
    pour l'exo 1.1 j'utilise un
    where exist (select....)
    de même que pour le 1.2 j'utilise un
    where not exist (select....)
    -
    pour l'exercice 3 (je met juste le code du select qui diffère du tient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT     v.compagnie Compagnie, 
                   v.numID Num_Vol, 
                   v.arrivee Dest, 
                   CASE 
                      WHEN d .jour = 2 THEN 'mardi' 
                      WHEN d .jour = 3 THEN 'mercredi' 
                   END Jour
    FROM         vols v, Depart d
    WHERE     v.numID = d .numVol
    Code rapide donc j'ai pas repirs tous les cas.
    -
    Judas ta requete est fausse elle ressort toutes les compagnies qui désservent Paris ou Lisbonne ou les 2
    -
    bonne journée

Discussions similaires

  1. exercices avec leurs corrigés de sql server 2005
    Par asmar dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/01/2010, 12h04
  2. Exercice sql server 2000
    Par tobba dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/05/2008, 05h30
  3. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  4. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42

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