Je développe une application gérant la location d'engins de chantier.
Chaque fois qu'un engin est loué ou revient de location, je génère une
écriture dans un fichier mouvements.
Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les
engins dont le dernier mouvement est antérieur à une date donnée.
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
Roumegou
Eric avait écrit le 13/04/2004 :
Bonjour,
Je développe une application gérant la location d'engins de chantier. Chaque fois qu'un engin est loué ou revient de location, je génère une écriture dans un fichier mouvements. Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue. Merci d'avance.
un peu léger comme description ...
Cela sera du genre (en extrapolant sur ton modèle)
Select distinct ENGIN.ENG_NOM FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID WHERE MOUVT.MVT_DATE<date donnée
Là où cela se compliquera, c'est si tu veux récupérer la date du dernier mouvement
Je développe une application gérant la location d'engins de chantier.
Chaque fois qu'un engin est loué ou revient de location, je génère une
écriture dans un fichier mouvements.
Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les
engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue.
Merci d'avance.
un peu léger comme description ...
Cela sera du genre (en extrapolant sur ton modèle)
Select distinct ENGIN.ENG_NOM FROM MOUVT
INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID
WHERE MOUVT.MVT_DATE<date donnée
Là où cela se compliquera, c'est si tu veux récupérer la date du
dernier mouvement
--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Je développe une application gérant la location d'engins de chantier. Chaque fois qu'un engin est loué ou revient de location, je génère une écriture dans un fichier mouvements. Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue. Merci d'avance.
un peu léger comme description ...
Cela sera du genre (en extrapolant sur ton modèle)
Select distinct ENGIN.ENG_NOM FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID WHERE MOUVT.MVT_DATE<date donnée
Là où cela se compliquera, c'est si tu veux récupérer la date du dernier mouvement
Je développe une application gérant la location d'engins de chantier. Chaque fois qu'un engin est loué ou revient de location, je génère une écriture dans un fichier mouvements. Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue. Merci d'avance.
Cela devrait fonctionner
Select all engin.nom as Nom, mouv.date as date from engin as Eng, mouv as Mvt where Eng.identifiant = Mvt.Identifiant AND mvt.date<datecherchée group by Nom, date order by Nom ASC, date DESC
Je développe une application gérant la location d'engins de chantier.
Chaque fois qu'un engin est loué ou revient de location, je génère une
écriture dans un fichier mouvements.
Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les
engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue.
Merci d'avance.
Cela devrait fonctionner
Select all engin.nom as Nom, mouv.date as date
from engin as Eng, mouv as Mvt
where Eng.identifiant = Mvt.Identifiant
AND mvt.date<datecherchée
group by Nom, date
order by Nom ASC, date DESC
A+
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Je développe une application gérant la location d'engins de chantier. Chaque fois qu'un engin est loué ou revient de location, je génère une écriture dans un fichier mouvements. Je voudrais obtenir, au moyen d'une requête SQL, la liste de tous les engins dont le dernier mouvement est antérieur à une date donnée.
Une idée serait la bienvenue. Merci d'avance.
Cela devrait fonctionner
Select all engin.nom as Nom, mouv.date as date from engin as Eng, mouv as Mvt where Eng.identifiant = Mvt.Identifiant AND mvt.date<datecherchée group by Nom, date order by Nom ASC, date DESC
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête. -- Cordialement
Merci pour vos solutions mais elles me retournent toutes les deux des
engins qui ont été mouvementés avant la date butoir mais qui ont aussi
été mouvementés *après* et c'est là mon problème. Je souhaite récupérer
uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement
dit ceux dont la date du *dernier mouvement* est antérieure à cette
date.
Peut-être que ce n'est pas possible en une seule requête.
--
Cordialement
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête. -- Cordialement
Roumegou
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
Merci pour vos solutions mais elles me retournent toutes les deux des
engins qui ont été mouvementés avant la date butoir mais qui ont aussi
été mouvementés *après* et c'est là mon problème. Je souhaite récupérer
uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement
dit ceux dont la date du *dernier mouvement* est antérieure à cette
date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT
INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID
GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM
HAVING MAX(MOUVT.MVT_DATE)<date donnée
--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL :-) Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN". En revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
En tout cas, merci beaucoup pour le coup de main.
-- Cordialement
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des
engins qui ont été mouvementés avant la date butoir mais qui ont aussi
été mouvementés *après* et c'est là mon problème. Je souhaite récupérer
uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement
dit ceux dont la date du *dernier mouvement* est antérieure à cette
date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT
INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID
GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM
HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL
:-)
Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN". En
revanche, c'est la raison de mon « presque », la requête me retourne
bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas
pourquoi.
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON ENGIN.ENG_ID=MOUVT.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL :-) Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN". En revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
En tout cas, merci beaucoup pour le coup de main.
-- Cordialement
Roumegou
Eric avait énoncé :
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL :-) Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une table ENGIN un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui est l'identifiant primaire de ENGIN. On a donc (au minimum) ENGIN : ENG_ID int(8), ENG_NOM Varchar(50) MOUVT : MVT_ID int(8), ENG_ID int(8), MVT_DATE Date
En
revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une connerie ! C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des
engins qui ont été mouvementés avant la date butoir mais qui ont aussi
été mouvementés *après* et c'est là mon problème. Je souhaite récupérer
uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement
dit ceux dont la date du *dernier mouvement* est antérieure à cette
date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT
INNER JOIN MOUVT ON MOUVT.ENG_ID=ENGIN.ENG_ID
GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM
HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL
:-)
Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une
table ENGIN
un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui
est l'identifiant primaire de ENGIN.
On a donc (au minimum)
ENGIN : ENG_ID int(8), ENG_NOM Varchar(50)
MOUVT : MVT_ID int(8), ENG_ID int(8), MVT_DATE Date
En
revanche, c'est la raison de mon « presque », la requête me retourne
bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas
pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une
connerie !
C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE)
FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID
GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM
HAVING MAX(MOUVT.MVT_DATE)<date donnée
En tout cas, merci beaucoup pour le coup de main.
--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Le 13 avril 2004 à 17:48, Eric Roumegou nous disait :
Eric a écrit :
Merci pour vos solutions mais elles me retournent toutes les deux des engins qui ont été mouvementés avant la date butoir mais qui ont aussi été mouvementés *après* et c'est là mon problème. Je souhaite récupérer uniquement ceux qui n'ont pas bougé depuis une date donnée, autrement dit ceux dont la date du *dernier mouvement* est antérieure à cette date.
Peut-être que ce n'est pas possible en une seule requête.
Tout est possible !
Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN MOUVT ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
C'est là que je m'aperçois que j'ai encore du boulot pour maîtriser SQL :-) Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une table ENGIN un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui est l'identifiant primaire de ENGIN. On a donc (au minimum) ENGIN : ENG_ID int(8), ENG_NOM Varchar(50) MOUVT : MVT_ID int(8), ENG_ID int(8), MVT_DATE Date
En
revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une connerie ! C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
Le 13 avril 2004 à 19:01, Eric Roumegou nous disait :
Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une table ENGIN un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui est l'identifiant primaire de ENGIN.
Tu as bien imaginé :-)
En
revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une connerie ! C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée
Là, ça fonctionne parfaitement ! Merci encore.
-- Cordialement
Le 13 avril 2004 à 19:01, Eric Roumegou nous disait :
Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une
table ENGIN
un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui
est l'identifiant primaire de ENGIN.
Tu as bien imaginé :-)
En
revanche, c'est la raison de mon « presque », la requête me retourne
bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas
pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une
connerie !
C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE)
FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID
GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM
HAVING MAX(MOUVT.MVT_DATE)<date donnée
Le 13 avril 2004 à 19:01, Eric Roumegou nous disait :
Ça marche (presque) en modifiant "FROM MOUVT" en "FROM ENGIN".
Attention ! J'ai imaginé ton modèle à savoir une table MOUVT et une table ENGIN un ENGIN a plusieurs MOUVT. La relation se fait par la zone ENG_ID qui est l'identifiant primaire de ENGIN.
Tu as bien imaginé :-)
En
revanche, c'est la raison de mon « presque », la requête me retourne bien ENGIN.ENG_ID mais pas ENGIN.ENG_NOM et je ne comprends pas pourquoi.
Parce que tu as fais sauté la jointure et que j'avais écris une connerie ! C'est : Select ENGIN.ENG_ID, ENGIN.ENG_NOM, MAX(MOUVT.MVT_DATE) FROM MOUVT INNER JOIN ENGIN ON MOUVT.ENG_ID=ENGIN.ENG_ID GROUP BY ENGIN.ENG_ID, ENGIN.ENG_NOM HAVING MAX(MOUVT.MVT_DATE)<date donnée