|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
bonjour,
un problème souvent discuté mais auquel je ne trouve pas de réponse: j'ai une table clients comme suit: id : date_creation je veux connaitre le nombre d'inscriptions par jour, entre deux dates Voici la requète: Code :
Code :
la seule solution est de faire des tables de jours des mois avec un join dessus ? Merci pour vos conseils éclairés Note: la structure de la table est ce qu'elle est, (champs date qui est un time() dans un varchar) |
||||
|
|
00
|
|
|
#2 | |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Citation:
Une table temporaire générée avant chaque requête, par exemple.
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
|
00
|
|
|
#3 | ||||||
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
Tu pourrais créer une table de 0 a 9 et avec des CROSS JOIN sur cette meme table pour avoir une table d'entier. Ajouter chaque entier a la date de départ et vérifier si elle ne dépasse pas la date d'arrivée.
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
![]() Sinon, y'a surement de quoi faire votre bonheur dans ce petit papier
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#5 | ||||||
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
On peux encore faire mieux! Sans table temporaire, sans boucle, et sans procédure.
On remplace la table num dans le code précédent Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
vos réponses sont très instructives, merci
j'ai testé les 3 requêtes, elles ne renvoient aucune erreur mais des NULL pour nombre (d'inscrits) pour toutes les dates (sauf le 3 août à vrai dire) hors un Code :
SELECT id,nom FROM clients WHERE datetime_creation BETWEEN '2011-08-01' AND '2011-08-31' je ne comprends pas d'où ça vient Merci à tous |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
T'es sur que c'est datetime_creation ou bien date_creation???
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
oui pardon je n'ai pas précisé,
en fait le champs datetime_creation est en format datetime mysql donc toujours le même problème |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
Le format du type DATETIME est 'YYYY-MM-DD HH:MM:SS' Alors que le type DATE est 'YYYY-MM-DD'. Si tu veux avoir un groupage par date, Il faut convertir datetime_creation qui est de type DATETIME en type DATE.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com