Bonjour,
Un problème SQL: comment peut on avoir la liste des clients dont la dernière
commande a été passée dans une période donnée ?
select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
commandes de la periode mais pas la dernière commande passée dans cette
periode !
Merci à tous
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
ManuPavy
I.G.LOG wrote:
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
... ORDER BY COMMANDE.DATE DESC LIMIT 1 ca devrait faire l affaire
Manu
I.G.LOG wrote:
Bonjour,
Un problème SQL: comment peut on avoir la liste des clients dont la dernière
commande a été passée dans une période donnée ?
select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
commandes de la periode mais pas la dernière commande passée dans cette
periode !
Merci à tous
... ORDER BY COMMANDE.DATE DESC LIMIT 1
ca devrait faire l affaire
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
... ORDER BY COMMANDE.DATE DESC LIMIT 1 ca devrait faire l affaire
Manu
Manu
"I.G.LOG" wrote in message news:41fa21c3$0$18847$
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la
dernière
commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT
and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
pour moi je dirais :
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
"I.G.LOG" <iglog@free.fr> wrote in message
news:41fa21c3$0$18847$8fcfb975@news.wanadoo.fr...
Bonjour,
Un problème SQL: comment peut on avoir la liste des clients dont la
dernière
commande a été passée dans une période donnée ?
select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT
and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
pour moi je dirais :
selecxt IDCLIENT
from COMMANDE
group by IDCLIENT
having max(COMMANDE.DATE ) between '20000101' and '20000201'
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la
dernière
commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT
and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
pour moi je dirais :
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
Philippe Lienart
I.G.LOG a formulé ce vendredi :
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
Dans quelle base de données travailles-tu. En MySQL je ne vois pas de problème car le champ date existe, mais en SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne soit pas enregistrée sous le format YYYYMMAA000000 mais bien avec une heure différente de zéro. Il s'en suit que la fonction between ne prend en compte que les dates entre les dates indiquées mais en y ajoutant des 0 pour les heures, minutes ,... Pour le début de la période cela ne pose pas de problème mais pour la fin de période cela peut créer un problème. J'utilise donc souvent >= date début et < date fin + 1 jour. :-) :-) :-)
-- A+
PhL
I.G.LOG a formulé ce vendredi :
Bonjour,
Un problème SQL: comment peut on avoir la liste des clients dont la dernière
commande a été passée dans une période donnée ?
select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
commandes de la periode mais pas la dernière commande passée dans cette
periode !
Merci à tous
Dans quelle base de données travailles-tu.
En MySQL je ne vois pas de problème car le champ date existe, mais en
SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne
soit pas enregistrée sous le format YYYYMMAA000000 mais bien avec une
heure différente de zéro.
Il s'en suit que la fonction between ne prend en compte que les dates
entre les dates indiquées mais en y ajoutant des 0 pour les heures,
minutes ,...
Pour le début de la période cela ne pose pas de problème mais pour la
fin de période cela peut créer un problème.
J'utilise donc souvent >= date début et < date fin + 1 jour.
:-) :-) :-)
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
Dans quelle base de données travailles-tu. En MySQL je ne vois pas de problème car le champ date existe, mais en SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne soit pas enregistrée sous le format YYYYMMAA000000 mais bien avec une heure différente de zéro. Il s'en suit que la fonction between ne prend en compte que les dates entre les dates indiquées mais en y ajoutant des 0 pour les heures, minutes ,... Pour le début de la période cela ne pose pas de problème mais pour la fin de période cela peut créer un problème. J'utilise donc souvent >= date début et < date fin + 1 jour. :-) :-) :-)
-- A+
PhL
ManuPavy
> pour moi je dirais :
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
Manu
>
pour moi je dirais :
selecxt IDCLIENT
from COMMANDE
group by IDCLIENT
having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement
LA derniere commande (tout client confondu).
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
Manu
digging
Philippe Lienart a exposé le 28/01/2005 :
I.G.LOG a formulé ce vendredi :
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
Dans quelle base de données travailles-tu. En MySQL je ne vois pas de problème car le champ date existe, mais en SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne soit pas enregistrée sous le format YYYYMMAA000000 mais bien avec une heure différente de zéro. Il s'en suit que la fonction between ne prend en compte que les dates entre les dates indiquées mais en y ajoutant des 0 pour les heures, minutes ,... Pour le début de la période cela ne pose pas de problème mais pour la fin de période cela peut créer un problème. J'utilise donc souvent >= date début et < date fin + 1 jour. :-) :-) :-)
Avec SQL Server, regarde la syntaxe de DATEDIFF, il n'y a aucun problème.
-- - concepteur ensemblier -
Philippe Lienart a exposé le 28/01/2005 :
I.G.LOG a formulé ce vendredi :
Bonjour,
Un problème SQL: comment peut on avoir la liste des clients dont la
dernière
commande a été passée dans une période donnée ?
select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT
and
COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les
commandes de la periode mais pas la dernière commande passée dans cette
periode !
Merci à tous
Dans quelle base de données travailles-tu.
En MySQL je ne vois pas de problème car le champ date existe, mais en
SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne soit
pas enregistrée sous le format YYYYMMAA000000 mais bien avec une heure
différente de zéro.
Il s'en suit que la fonction between ne prend en compte que les dates entre
les dates indiquées mais en y ajoutant des 0 pour les heures, minutes ,...
Pour le début de la période cela ne pose pas de problème mais pour la fin de
période cela peut créer un problème.
J'utilise donc souvent >= date début et < date fin + 1 jour.
:-) :-) :-)
Avec SQL Server, regarde la syntaxe de DATEDIFF, il n'y a aucun
problème.
Bonjour, Un problème SQL: comment peut on avoir la liste des clients dont la dernière commande a été passée dans une période donnée ? select * from CLIENT, COMMANDE where COMMANDE.IDCLIENT = CLIENT.IDCLIENT and COMMANDE.DATE between '20000101' and '20000201' va me retourner toutes les commandes de la periode mais pas la dernière commande passée dans cette periode ! Merci à tous
Dans quelle base de données travailles-tu. En MySQL je ne vois pas de problème car le champ date existe, mais en SQLServeur il s'agit d'une champ dateheure et il se peut que la date ne soit pas enregistrée sous le format YYYYMMAA000000 mais bien avec une heure différente de zéro. Il s'en suit que la fonction between ne prend en compte que les dates entre les dates indiquées mais en y ajoutant des 0 pour les heures, minutes ,... Pour le début de la période cela ne pose pas de problème mais pour la fin de période cela peut créer un problème. J'utilise donc souvent >= date début et < date fin + 1 jour. :-) :-) :-)
Avec SQL Server, regarde la syntaxe de DATEDIFF, il n'y a aucun problème.
-- - concepteur ensemblier -
I.G.LOG
> > selecxt IDCLIENT > from COMMANDE > group by IDCLIENT > having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je cherche bien à avoir toutes les dernières commandes durant la période de chaque client ! Est-ce la solution ? PS: pour ceux qui ont posé la question, je travaille avec MySQL.
> > selecxt IDCLIENT
> from COMMANDE
> group by IDCLIENT
> having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement
LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je
cherche bien à avoir toutes les dernières commandes durant la période de
chaque client ! Est-ce la solution ?
PS: pour ceux qui ont posé la question, je travaille avec MySQL.
> > selecxt IDCLIENT > from COMMANDE > group by IDCLIENT > having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je cherche bien à avoir toutes les dernières commandes durant la période de chaque client ! Est-ce la solution ? PS: pour ceux qui ont posé la question, je travaille avec MySQL.
I.G.LOG
Je travaille avec MySQL. select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101' and '20041231' select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between '20040101' and '20041231' les des deux requetes ne me retourne rien alors qu'il y a bien des lignes qui correspondent dans la table ! essais réalisé sous WD9 et MySQL Control Center
Je travaille avec MySQL.
select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101'
and '20041231'
select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between
'20040101' and '20041231'
les des deux requetes ne me retourne rien alors qu'il y a bien des lignes
qui correspondent dans la table !
essais réalisé sous WD9 et MySQL Control Center
Je travaille avec MySQL. select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101' and '20041231' select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between '20040101' and '20041231' les des deux requetes ne me retourne rien alors qu'il y a bien des lignes qui correspondent dans la table ! essais réalisé sous WD9 et MySQL Control Center
ManuPavy
I.G.LOG wrote:
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je cherche bien à avoir toutes les dernières commandes durant la période de chaque client ! Est-ce la solution ? PS: pour ceux qui ont posé la question, je travaille avec MySQL.
C'est bien pour cela qu il faut utiliser la requete de ... Manu (ah merde, t as peut etre cru qu on etait qu un !?) ; celle ci dessus.
Manu
I.G.LOG wrote:
selecxt IDCLIENT
from COMMANDE
group by IDCLIENT
having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement
LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je
cherche bien à avoir toutes les dernières commandes durant la période de
chaque client ! Est-ce la solution ?
PS: pour ceux qui ont posé la question, je travaille avec MySQL.
C'est bien pour cela qu il faut utiliser la requete de ... Manu (ah
merde, t as peut etre cru qu on etait qu un !?) ; celle ci dessus.
selecxt IDCLIENT from COMMANDE group by IDCLIENT having max(COMMANDE.DATE ) between '20000101' and '20000201'
Oui, je viens de m'apercevoir que ce que je proposais rendait uniquement LA derniere commande (tout client confondu).
"(tout client confondu)" cette requete va retourner une seule ligne ?! Je cherche bien à avoir toutes les dernières commandes durant la période de chaque client ! Est-ce la solution ? PS: pour ceux qui ont posé la question, je travaille avec MySQL.
C'est bien pour cela qu il faut utiliser la requete de ... Manu (ah merde, t as peut etre cru qu on etait qu un !?) ; celle ci dessus.
Manu
ManuPavy
I.G.LOG wrote:
Je travaille avec MySQL. select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT > CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101' and '20041231' select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between '20040101' and '20041231' les des deux requetes ne me retourne rien alors qu'il y a bien des lignes qui correspondent dans la table ! essais réalisé sous WD9 et MySQL Control Center
essaie avec ... between '2004-01-01' and '2004-12-31'
Manu
I.G.LOG wrote:
Je travaille avec MySQL.
select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT > CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101'
and '20041231'
select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between
'20040101' and '20041231'
les des deux requetes ne me retourne rien alors qu'il y a bien des lignes
qui correspondent dans la table !
essais réalisé sous WD9 et MySQL Control Center
essaie avec ... between '2004-01-01' and '2004-12-31'
Je travaille avec MySQL. select CLIENT.IDCLIENT from CLIENT,CLICOM where CLICOM.IDCLIENT > CLIENT.IDCLIENT group by IDCLIENT having max(CLICOM.DATE) between '20040101' and '20041231' select IDCLIENT from CLICOM group by IDCLIENT having max(DATE) between '20040101' and '20041231' les des deux requetes ne me retourne rien alors qu'il y a bien des lignes qui correspondent dans la table ! essais réalisé sous WD9 et MySQL Control Center
essaie avec ... between '2004-01-01' and '2004-12-31'
Manu
I.G.LOG
> essaie avec ... between '2004-01-01' and '2004-12-31'
Super ca a l'air d'être ça ! Merci Manu
> essaie avec ... between '2004-01-01' and '2004-12-31'