Bonjour,
Mon professeur de SQL nous a demandé de faire un exercice que je n'arrive pas à résoudre :
On travaille sur une base de donnée modélisant une entreprise de transport. On dispose entre autres des tables suivantes :
- Etapes(NumeroTrajet, NomVille, DateArrivé, DateDépart) symbolisant une étape d'un trajet dans lequel le bus s'y arrête de la DateArrivé à la DateDépart
- Reservations(NumeroReservation, NuméroClient, NuméroTrajet, VilleDépart, VilleArrivée, NombrePlaces) qui symbolise le nombre de places réservées par un client voulant aller d'une ville de départ à une ville d'arrivée
On nous demande d'abord d'écrire une vue ReservationsAvecHoraires qui retourne la description de chaque réservation augmentée des dates/horaires de départ et d'arrivée. Je suis parvenu à la faire :
Le problème : maintenant on nous demande d'écrire la vue NbPlacesRéservéesEtapes qui doit retourner à chaque étapes d'un trajet, le nombre de places qui sont réservées à ce moment là (il faut prendre en compte dans la somme les places réservées aux étapes précédantes et qui ne se sont pas encore libérées au moment de cette étape)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE VIEW ReservationsAvecHoraires AS SELECT R.NumR, R.NumC, R.NumT, R.NbPlaces, R.VilleD, R.VilleA, TO_CHAR(E1.DateD, 'DD/MM/YYYY HH24:Mi') AS DateD, TO_CHAR(E2.DateA, 'DD/MM/YYYY HH24:Mi') AS DateA FROM Reservations R, Etapes E1, Etapes E2 WHERE R.NumT = E1.NumT AND R.NumT = E2.NumT AND R.VilleD = E1.NomV AND R.VilleA = E2.NomV;
Par exemple : si un trajet comprend 5 villes, qu'un premier client réserve des places de Ville1 à Ville3, et un autre de Ville2 à Ville4, il faut sommer le nombre de places de la réservation 1 et 2 au niveau de la Ville2 (car le premier client n'est pas encore descendu).
Je vous remercie d'avance si vous pouvais m'éclairer !
Partager