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 :

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;
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)
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 !