Bonjour tout le monde, j'espère que vous allez bien.

Je suis nouveau ici et j'aimerais vous demander un petit coup de main ^^"

J'ai une série d'exercices pour m'entrainer sur un langage que j'apprends, le SQL Oracle. Mais il y en a un, j'ai beau me casser la tête depuis plus de trois jours, ça ne vient pas.

L'intitulé c'est :

Affichez le numéro du train, le nom du train et le nombre de places. Ne prendre en compte que les trains qui ont parcouru une distance supérieure à 300 Km le 22/10/2020 et pour lesquels des billets ont été réservés.

Triez les résultats par le numéro du train.
Voici les différentes tables :



Donc en gros, il existe 4 types de T_WAGON, WAGON_ID = 1 veut dire que c'est le premier type de wagon, qui possède NB_SEAT = 30. WAGON_ID = 2 veut dire qu'il y a NB_SEAT = 20. Et dans un train, on a par exemple 6 WAGON_ID = 1 et 7 WAGON_ID = 2.
Mon problème, c'est que je n'arrive pas à passer de T_TRAIN (les trains qui sont partis le 22 et qui ont fait 300 kilomètres - ça j'y arrive) à faire la SUM de toutes les NB_SEAT du même train et l'afficher...

Mon code :

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
SELECT DISTINCT tra.train_id "Nø train", tra.departure_time "Heure de depart", dep.city ||' - '|| dest.city "Depart - Arrivee", 
(SELECT SUM(E.NB_SEAT) FROM T_WAGON e JOIN T_WAGON_TRAIN g ON E.WAGON_ID = G.WAG_TR_ID JOIN T_TRAIN t ON G.WAG_TR_ID = T.TRAIN_ID WHERE T.TRAIN_ID = tra.train_id) "Nombre de place"
 
FROM t_train tra
JOIN t_wagon_train wagtra
ON tra.train_id = wagtra.train_id
JOIN t_wagon wag
ON wagtra.wagon_id = wag.wagon_id
JOIN vu_station dep
ON dep.station_id = tra.departure_station_id
JOIN vu_station dest
ON dest.station_id = tra.arrival_station_id
JOIN t_ticket tic
ON wagtra.wag_tr_id = tic.wag_tr_id
WHERE tra.distance > 300 AND tic.reservation_id IS NOT NULL AND TO_CHAR(tra.departure_time, 'DD/MM/YYYY') LIKE '22/10/2020'
ORDER BY tra.train_id
/
Qui donne



C'est surement un code horrible et très moche j'en suis navré, je débute xD

Si quelqu'un à un conseil ou une astuce, j'aimerais bien savoir comment faire.

Bien à vous !