Je rencontre a priori un problème pour concevoir une table et une
requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de
relever le kilométrage, la quantité de carburant (plein dans une
station) en fonction de la date.
J'ai pensé créer ma table de la façon suivante :
table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de
kilomètres parcourus, entre l'avant-dernière et la dernière date de
relevé, ainsi que la quantité de carburant. Par la suite connaitre
aussi mois par mois le kilométrage parcouru ainsi que la quantité
totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette
requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Merci d'avance
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel_D
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une
requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de
relever le kilométrage, la quantité de carburant (plein dans une
station) en fonction de la date.
J'ai pensé créer ma table de la façon suivante :
table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de
kilomètres parcourus, entre l'avant-dernière et la dernière date de
relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi
mois par mois le kilométrage parcouru ainsi que la quantité totale de
carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette
requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein,
Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate
FROM TaTable AS T1 INNER JOIN TaTable AS T2
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein)
GROUP BY T1.IDvehicule, T1.DatePlein
ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein,
DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein
FROM aaarConso0 AS T1
WHERE T1.DatePlein
In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule)
ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein,
(T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso
FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3
ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule))
ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1,
Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois
FROM TaTable AS T1
GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois,
(T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois
FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2
INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4
ON (T3.IDvehicule=T4.IDvehicule)
AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein))
ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein))
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1)
ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Michel_D
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une
requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de
relever le kilométrage, la quantité de carburant (plein dans une
station) en fonction de la date.
J'ai pensé créer ma table de la façon suivante :
table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de
kilomètres parcourus, entre l'avant-dernière et la dernière date de
relevé, ainsi que la quantité de carburant. Par la suite connaitre
aussi mois par mois le kilométrage parcouru ainsi que la quantité
totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette
requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein,
Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate
FROM TaTable AS T1 INNER JOIN TaTable AS T2
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein)
GROUP BY T1.IDvehicule, T1.DatePlein
ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein,
DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein
FROM aaarConso0 AS T1
WHERE T1.DatePlein
In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule)
ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein,
(T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso
FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3
ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule))
ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1,
Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois
FROM TaTable AS T1
GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois,
(T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois
FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2
INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4
ON (T3.IDvehicule=T4.IDvehicule)
AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein))
ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein))
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1)
ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Access13090
Michel_D avait écrit le 29/03/2008 :
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Bonjour Michel, Merci beaucoup. Je vais essayer vos solutions Cordialement
Michel_D avait écrit le 29/03/2008 :
Bonjour,
Bonsoir à tou(te)s,
Je rencontre a priori un problème pour concevoir une table et une requête
calculée.
La table en question doit permettre, pour chacun de nos véhicules, de
relever le kilométrage, la quantité de carburant (plein dans une station)
en fonction de la date.
J'ai pensé créer ma table de la façon suivante :
table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de
kilomètres parcourus, entre l'avant-dernière et la dernière date de
relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi
mois par mois le kilométrage parcouru ainsi que la quantité totale de
carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette
requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein,
Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate
FROM TaTable AS T1 INNER JOIN TaTable AS T2
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein)
GROUP BY T1.IDvehicule, T1.DatePlein
ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein,
DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein
FROM aaarConso0 AS T1
WHERE T1.DatePlein
In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule)
ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein,
(T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso
FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3
ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule))
ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1,
Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois
FROM TaTable AS T1
GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois,
(T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois
FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2
INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4
ON (T3.IDvehicule=T4.IDvehicule)
AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein))
ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein))
ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1)
ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Bonjour Michel,
Merci beaucoup.
Je vais essayer vos solutions
Cordialement
Je rencontre a priori un problème pour concevoir une table et une requête calculée.
La table en question doit permettre, pour chacun de nos véhicules, de relever le kilométrage, la quantité de carburant (plein dans une station) en fonction de la date. J'ai pensé créer ma table de la façon suivante : table RELEVÉ(N°chrono, N°véhicule, date, relevé km, quantité carburant)
Concernant la requête, je souhaite pouvoir calculer le nombre de kilomètres parcourus, entre l'avant-dernière et la dernière date de relevé, ainsi que la quantité de carburant. Par la suite connaitre aussi mois par mois le kilométrage parcouru ainsi que la quantité totale de carburant.
Mais là, je suis totalement perdu. Je ne sais pas comment monter cette requête.
Quelqu'un pourrait-il me guider ou me conseiller?
Voici ce que je te propose en plusieurs requêtes (à adapter) :
La 1ère requête intermédiaire nommée "aaarConso0" :
SELECT T1.IDvehicule, T1.DatePlein AS DatePlein, Min(DateDiff("d",T1.DatePlein,T2.DatePlein)) AS DiffDate FROM TaTable AS T1 INNER JOIN TaTable AS T2 ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein<T2.DatePlein) GROUP BY T1.IDvehicule, T1.DatePlein ORDER BY T1.IDvehicule, T1.DatePlein DESC;
La 2ème requête intermédiaire nommée "aaarConso1" :
SELECT T1.IDvehicule, T1.DatePlein, DateAdd("d",T1.DiffDate,T1.DatePlein) AS derDatePlein FROM aaarConso0 AS T1 WHERE T1.DatePlein In (SELECT Max(DatePlein) FROM aaarConso0 GROUP BY IDvehicule) ORDER BY T1.IDvehicule;
La 3ème requête qui donne le résultat pour la 1ère demande :
SELECT T2.IDvehicule, T2.DatePlein, T2.derDatePlein, (T3.Compteur-T1.Compteur) AS distance, T1.Quantite AS conso FROM TaTable AS T1 RIGHT JOIN (aaarConso1 AS T2 LEFT JOIN TaTable AS T3 ON (T2.derDatePlein=T3.DatePlein) AND (T2.IDvehicule=T3.IDvehicule)) ON (T1.DatePlein=T2.DatePlein) AND (T1.IDvehicule=T2.IDvehicule);
La 4ème requête intermédiaire nommée "aaarConso4" :
correction c'est la 4ème requête intermédiaire nommée "aaarConso3" :
SELECT T1.IDvehicule, Min(T1.DatePlein) AS DatePlein1, Max(T1.DatePlein) AS DatePlein2, Sum(T1.Quantite) AS ConsoMois FROM TaTable AS T1 GROUP BY T1.IDvehicule, Month(T1.DatePlein);
La 5ème requête qui donne le résultat pour la 2ème demande :
SELECT T2.IDvehicule, Month(T2.DatePlein1) AS DateMois, (T4.Compteur-T1.Compteur) AS distance, T2.ConsoMois FROM TaTable AS T1 INNER JOIN (aaarConso3 AS T2 INNER JOIN (aaarConso0 AS T3 INNER JOIN TaTable AS T4 ON (T3.IDvehicule=T4.IDvehicule) AND (DateAdd("d",T3.DiffDate,T3.DatePlein)=T4.DatePlein)) ON (T2.IDvehicule=T3.IDvehicule) AND (T2.DatePlein2=T3.DatePlein)) ON (T1.IDvehicule=T2.IDvehicule) AND (T1.DatePlein=T2.DatePlein1) ORDER BY T2.IDvehicule, Month(T2.DatePlein1);
Bonjour Michel, Merci beaucoup. Je vais essayer vos solutions Cordialement