Aide requéte SQL est-ce que c'est juste?

etudiantepg Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   -
Voila je voudrai une requéte pour calculer le montant des reservations réalisés en une journée donnée ( in put date ), les tables sont :

ma table Voiture

matricule | marque | modele | tarif_r | etat
----------------+-----------+----------+--------------+---------
4568 | Peugeot | 206 | 500 | reserver
6758 | Renault | clio4 | 56 | libre


et ma table Reservation

matricule | id_client | date_reservation | nbr_j_reservation
----------------+-----------+-----------------------+----------------------
4568 | Sara | 20-06-2013 | 5
6758 | Anais | 13-10-2013 | 17

et ma requéte :

SELECT tarif_r from Voiture INNER JOIN Reservation ON (Voiture.matric = Reservation.matric) WHERE date_reservation='"+date+"'";

est ce que c'est juste?????

4 réponses

Utilisateur anonyme
 
Bonjour

Ça a l'air correct, à un détail près. Il peut y avoir plusieurs réservations le même jour, il faudrait donc faire SELECT SUM(tarif_r )...
1
rafikcne Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
select SUM(Voi.tarif_r) from RESERVATION Res, VOITURE Voi
where Voi.matricule = Res.matricule and Res.Date_Reservation = Ta_Date and Voi.etat = "reserver"
0
etudiantepg Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
merciii beaucoup rafik :)
0
heliconius Messages postés 539 Date d'inscription   Statut Membre Dernière intervention   142
 
Bonsoir,

tout à fait, mais je rajouterai quelque chose qui n'a rien à voir avec la requête.

Je serais toi, au lieu de remplir ton champ Voiture.etat avec le texte reserver ou libre, je créerais une table EtatsVoiture avec différentes valeurs de champ (réservé, libre, réparation, location LD, etc...)

Si un véhicule est en réparation, tu fais comment ?
- Puisqu'il n'est pas réservé, il est donc libre ! => non: réparation
- Puisqu'il n'est pas libre, il est donc réservé par quelqu'un ! => non: réparation

De plus, ça évite les erreurs de saisie qui pourraient donner des résultats erronés :
- ... where Voiture.etat = 'reserver';
- ... where Voiture.etat = 'reservé';
- ... where Voiture.etat = 'reservée';
- ... where Voiture.etat = 'réserver';

un ... where Voiture.etat=1; est plus fiable !
0