|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre à l'essai
![]() |
Bonsoir tout le monde !
J'ai quelque problème pour finir deux de mes pages au niveau des requêtes mysql... Voilà la structure de ma table qui contient toutes les actions du membre : Code :
Comme ça il m'est facile de voir qui n'est pas venu depuis X jours... J'ai fait cette requête mais elle n'est pas correcte vu qu'elle ne me prend pas la dernière date de connexion du membre mais la première... Code :
Et la deuxième requête devrait faire en sorte de m'afficher tout les membres qui ne se sont pas connecté depuis plus de 25 jours ! J'ai donc fait ça mais pareil ça ne marche pas comme je le voudrais... Code :
Merci et bonne soirée ! |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Ta table est mal construite, il faudrait une seule colonne DATETIME et non une colonne DATE et une colonne TIME. Pour la suite, je suppose que c'est fait dans une colonne nommée dateheure.
Pour ta première requête, il faut que tu utilises un MAX(dateheure) dans le SELECT et le ORDER BY, à la place de last_action.date et last_action.heure, et que tu laisses tomber last_action.ip (si un membre peut avoir plusieurs IP). Pour la seconde, c'est il faut utiliser < et non >. |
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() |
C'est plus compliqué après pour gèrer seulement les dates non ?
La je peux gérer correctement les dates et mettre aussi les heure si j'en ai besoin, mais généralement j'utilise que la date, et ne prend pas en compte l'heure. Genre je travail beaucoup avec les dates du style : Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Si tu veux chercher des trucs du genre "le plus récent", avoir deux colonnes te force à faire une formule du genre
Code :
MAX(date_add( `date`, INTERVAL heure HOUR_SECOND )) A l'inverse, pour les recherches sur une date précise, il suffit d'arrondir avec la fonction DATE() : Code :
WHERE DATE(dateheure) != CURDATE() - INTERVAL 23 DAY |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() |
je savais pas qu'en fessant DATE(dateheure) sa arrondi.
je peux utiliser date, je lu dans la doc que ça ne pose pas de problème. Merci je vais tester. EDIT : j'arrive pas a savoir ce que "DATE(dateheure)" me retourne. Il arrondi comment a quoi ? |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
DATE te donne la date sans l'heure...
Code :
SELECT now() AS dateheure, date(now()) AS dateseule |
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() |
Merci c'est parfait !
Merci beaucoup ! |
|
|
00
|
|
|
#8 | ||
|
Membre à l'essai
![]() |
j'ai encore un dernière problème avec la requête pour afficher tout les membres non connecté depuis 23 jours...
Code :
J'aimerais bien qu'il récupéré que le dernière et non le premier enregistrement dans la table. Merci ! |
||
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
j'aurai plutot vu un truc du genre, sans être sur de la syntaxe:
Code :
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
||
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
oui, c'est bien un HAVING et non un WHERE.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com