Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2973 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBDR] Base - Requete calcul montant contrat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SGBDR] Base - Requete calcul montant contrat

n°1685835
Winnuke
Posté le 13-02-2008 à 13:58:49  profilanswer
 

Bonjour,
Je debute completement en sql, et la on est sous Base (open office).
Le but de la requete que j'aimerai faire est de calculer le montant d'une location de voiture.
Voila ce que j'ai fait, evidemment ca ne marche pas, mais je comprends pas bien ce qui cloche...
 
SELECT (SUM( ( Km_fin - Km_debut ) * Tarif_km ) , ( ( (Date_fin - Date_debut ) - Nb_jours ) * Supp_jour ) , Prix_loc) AS "CA Contrat"
FROM Contrat, Forfaits, Vehicules, Tarifer, Categories  
WHERE Contrat.Periode_loc = Forfaits.Periode_loc  
AND Contrat.N°_Immatriculation = Vehicules.N°_Immatriculation  
AND Vehicules.Code_cat = Categories.Code_cat  
AND Categories.Code_cat = Tarifer.Code_cat  
AND N°_contrat = 'CD-DIRE-12'
 
Si quelqu'un qui s'y connait un minimum peut m'aiguiller ca me serait d'une grande aide.
 
Merci d'avance.

mood
Publicité
Posté le 13-02-2008 à 13:58:49  profilanswer
 

n°1685837
chapi
Downgradé
Posté le 13-02-2008 à 14:05:23  profilanswer
 

Ben, deja tu melanges un sum avec un expression simple (ex : prix_loc)...ça ne peut pas marcher, il va au moins te falloir un group by quelques part.
 
Je ne connais pas base mais date_fin - date_debut...c'est un peu étonnant :D Tu n'as pas un datediff de dispo ?
 
"FROM Contrat, Forfaits, Vehicules, Tarifer, Categories "
J'ai du mal avec cette syntaxe. Tu es sur de ton schema relationnel ? Perso, j'prefere des bons vieux inner join :O


---------------
I drive at 88mph ! Just in case...
n°1685850
Winnuke
Posté le 13-02-2008 à 14:13:54  profilanswer
 

chapi a écrit :

Ben, deja tu melanges un sum avec un expression simple (ex : prix_loc)...ça ne peut pas marcher, il va au moins te falloir un group by quelques part.
 
Je ne connais pas base mais date_fin - date_debut...c'est un peu étonnant :D Tu n'as pas un datediff de dispo ?
 
"FROM Contrat, Forfaits, Vehicules, Tarifer, Categories "
J'ai du mal avec cette syntaxe. Tu es sur de ton schema relationnel ? Perso, j'prefere des bons vieux inner join :O


 
Merci de ta reponse rapide.
Alors, j'ai mis un group by sur le numero du contrat.
J'ai mis un datediff pour les 2 dates.
Pour le inner join, je connais pas :D  . Mais a priori mes jointures sont bonnes.
 
Maintenant j'ai une erreur sql, donc faut que je vois si j'ai pas une erreur de synthaxe toute bete quelque part.

n°1685857
chapi
Downgradé
Posté le 13-02-2008 à 14:18:20  profilanswer
 

Winnuke a écrit :


 
Merci de ta reponse rapide.
Alors, j'ai mis un group by sur le numero du contrat.
J'ai mis un datediff pour les 2 dates.
Pour le inner join, je connais pas :D  . Mais a priori mes jointures sont bonnes.
 
Maintenant j'ai une erreur sql, donc faut que je vois si j'ai pas une erreur de synthaxe toute bete quelque part.


group by sur le contrat ? Marchera pas. date_fin, date_debut, nb_jour, supp_jour et prix_loc sont des expressions simples
 
Un truc dans le genre:  
 
SELECT SUM( ( Km_fin - Km_debut ) * Tarif_km ) ,  ( datediff(day,Date_fin,Date_debut ) - Nb_jours ) * Supp_jour  , Prix_loc
FROM Contrat
inner join vehicules on contrat.N°_Immatriculation = Vehicules.N°_Immatriculation  
inner join categories on Vehicules.Code_cat = Categories.Code_cat  
inner join tarifer on Categories.Code_cat = Tarifer.Code_cat  
where N°_contrat = 'CD-DIRE-12'
group by ( (Date_fin -Date_debut ) - Nb_jours ) * Supp_jour  , Prix_loc
 
J'peux pas test :O


Message édité par chapi le 13-02-2008 à 14:19:35

---------------
I drive at 88mph ! Just in case...
n°1685871
Winnuke
Posté le 13-02-2008 à 14:45:37  profilanswer
 

Non marche pas non plus :(
Mais ton inner join je suis pas fan, notre prof nous en a jamais parlé, ca doit etre que sur office.
Bon c'est pas grave, j'ai tente ca, mais je crois que j'ai pas le niveau au final...
 
Merci quand meme pour ton aide.

n°1685875
chapi
Downgradé
Posté le 13-02-2008 à 14:52:56  profilanswer
 

Winnuke a écrit :

Non marche pas non plus :(
Mais ton inner join je suis pas fan, notre prof nous en a jamais parlé, ca doit etre que sur office.
Bon c'est pas grave, j'ai tente ca, mais je crois que j'ai pas le niveau au final...
 
Merci quand meme pour ton aide.


Inner join, c'est un peu la base en sql quand même :D
 
Mon group by est faux, regarde bien ;)
 

Spoiler :

group by ( datediff(day,Date_fin,Date_debut ) - Nb_jours ) * Supp_jour  , Prix_loc

Message cité 1 fois
Message édité par chapi le 13-02-2008 à 14:53:14

---------------
I drive at 88mph ! Just in case...
n°1685900
Winnuke
Posté le 13-02-2008 à 15:40:57  profilanswer
 

C'est surement la base mais meme la base on y est pas encore :x
En meme temps je suis en compta donc c'est vraiment juste de la decouverte ;)
 
PS: Marche pas non plus avec la correction.

n°1685901
babasss
Posté le 13-02-2008 à 15:41:24  profilanswer
 

chapi a écrit :


Inner join, c'est un peu la base en sql quand même :D


+100000
Faire autrement, avec des Where partout, c'est vraiment  [:vomi]


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1685912
chapi
Downgradé
Posté le 13-02-2008 à 15:59:58  profilanswer
 

Winnuke a écrit :

C'est surement la base mais meme la base on y est pas encore :x
En meme temps je suis en compta donc c'est vraiment juste de la decouverte ;)
 
PS: Marche pas non plus avec la correction.


Ben faudrait voir la tronche de ta base alors :D


---------------
I drive at 88mph ! Just in case...
n°1685966
Winnuke
Posté le 13-02-2008 à 18:31:06  profilanswer
 

Voila ma base, mais qui est donc en format open office:
Lien
 
PS: je regarde si ya un truc pour la convertir vers office

mood
Publicité
Posté le 13-02-2008 à 18:31:06  profilanswer
 

n°1685982
Winnuke
Posté le 13-02-2008 à 19:21:56  profilanswer
 

J'ai reussi  [:bodette]
C'etait juste ma fonction DateDiff qui etait pas bonne, fallait juste des ' autour de day...   La lutte quoi...  :sleep:

 

Le "Sum" par contre, il veut pas, donc j'ai laissé mes + .
Ca donne ca:
SELECT (Km_fin - Km_debut) * Tarif_km + (DateDiff('day',Date_debut, Date_fin) - Nb_jours) * Supp_jour + Prix_loc
FROM Contrat, Vehicules, Categories, Forfaits, Tarifer
WHERE Contrat.N°_Immatriculation=Vehicules.N°_Immatriculation
AND Vehicules.Code_cat=Categories.Code_cat
AND Contrat.Periode_loc=Forfaits.Periode_loc
AND Forfaits.Periode_loc=Tarifer.Periode_loc
AND Categories.Code_cat=Tarifer.Code_cat
AND N°_contrat =: Entrez_un_numero_de_contrat;

 


Bon pour vous ca doit pas etre joli, je me doute, mais bon, sur base ca marche, c'est le principal :D

 


Message édité par Winnuke le 13-02-2008 à 19:22:14
n°1685994
chapi
Downgradé
Posté le 13-02-2008 à 19:45:07  profilanswer
 

Un sum te fait la somme d'un ensemble de lignes.
 
Là si tu as plusieurs lignes avec le même numero de contrat (oui, c'est très con :D mais c'est pour l'exemple) tu auras un total par ligne.
 
Cela dit j'avais super mal visualisé ta requête. shame on me :O


---------------
I drive at 88mph ! Just in case...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBDR] Base - Requete calcul montant contrat

 

Sujets relatifs
[PHP/Mysql] Les trous de sécurité de base à éviter[SGBD Access 2007 pro] Comment exécuter une requête en SQL (débutant)
Gestion de base de donnéesRequête dans e-mail reçu
problème de selection de date dans ma requête oracleMise à jour base données par ajax avec variables POST
Probleme et optimisation de requeteComment créer un lien avec des éléments d'une base de données?
Probème de requête avec jointure externe 
Plus de sujets relatifs à : [SGBDR] Base - Requete calcul montant contrat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR