Besion d'aide pour contruction requête de ouf

Fermé
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 - 20 nov. 2014 à 23:19
Venusia95 Messages postés 27 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 17 mars 2015 - 21 nov. 2014 à 17:01
Bonjour a tous

Voila il faut que je fasse une requête très particulière pour remplir un histogramme en c#.

J'ai 4 tables, CLIENT, RESERVATION, RESERVER et TARIF.
RESERVER et un table de "jointure" qui fait correspondre CLIENT et RESERVATION par rapport a un utilisateur (table dont j'ai pas besoin ici) et une date de gestion.
TARIF comporte 6 champs dont 4 dont je me sert ici, le tarif pour 1 et 2 jours en double que j'utilise par rapport à un booléen qui définit si client et local ou pas.


Le but de la requête est d'afficher mois par mois sur 1 année l'argent encaissé pour voir la balance commercial avec 2 "série" local ou pas. (donc 2 requête)

j'ai plusieurs souci :
_ comment dans ma requête je peut calculer ma différence entre 2 dates (RESERVATION.datesdebut et RESERVATION.datesfin) pour indiquer le bon tarif qui dépend aussi de mon booléen (CLIENT.locals)
_ comment faire en sorte que la requête renvoi un résultat mois par mois pour 1 année
_ dans ma table RESERVER une réservation peut apparaitre plusieurs fois il faudrait que seul la plus récente ressorte via la date de gestion la plus récente.


Voila la ou j'en suis de cette requête qui me pose tant de souci :

select * from CLIENT join RESERVER on CLIENT.id_client=RESERVER.id_client join RESERVATION on RESERVER.id_reservation=RESERVATION.id_reservation join TARIF on RESERVATION.id_tarif=TARIF.id_tarif where RESERVER.id_reservation=(select id_reservation form RESERVER where ) and CLIENT.locals=1

Évidement ce n'est qu'une ébauche avec des trou la ou je ne sais pas comment faire...


Merci d'avance a qui pourra trouver la solution.

1 réponse

Venusia95 Messages postés 27 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 17 mars 2015 3
21 nov. 2014 à 17:01
Bonjour,

Je ne suis pas sûre d'avoir bien tout compris mais je pense pouvoir t'apporter mon aide au moins sur les points "soucis" :
De plus, sans avoir la structure complète des tables, c'est compliqué

1 - Pour calculer la différence entre deux dates : (si tu veux la différence en jour, ou en année tu remplace month par day ou year)
SELECT DATEDIFF(datesfin, datesdebut) from RESERVATION
2 - Il est possible de faire un count(Reservation.*) et sum(Reservation.Prix) par exemble pour avoir la totalité des réservation faites et la totalité des sommes gagnée. En ajoutant la clause Group by SUBSTR(datesdebut, 0, 7), ca permet d'avoir les données triées par mois.
3-Pour avoir la date la plus récente, il faut une sous-requête :
Select * from reserver where dateGestion = (select Max(dateGestion) from Reserver)

En espérant avoir été un peu près clair ...

Bon courage pour la suite!
0