afficher les lignes sur une période de 21 jours.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher les lignes sur une période de 21 jours.

Re: afficher les lignes sur une période de 21 jours.

par subran » 27 juil. 2014, 23:18

Il me retourne une erreur sql
#1111 - Invalid use of group function
Mais en effet cela semble être la bonne piste. Je teste et dès que je trouve je poste la solution.

Merci Elie !

Re: afficher les lignes sur une période de 21 jours.

par Elie » 27 juil. 2014, 22:41

AND `retard_retdate` BETWEEN MAX(`retard_retdate`) AND DATE_SUB(MAX(`retard_retdate`), INTERVAL 21 DAY)
MAX(`retard_retdate`) permet d'avoir son dernier retard.
Et de savoir si il a eu 3 retard entre son dernier retard et son dernier retard - 21 jours.
Je sais pas si ca marche mais cette logique est interessante

Re: afficher les lignes sur une période de 21 jours.

par subran » 27 juil. 2014, 22:30

Sur un laps de temps de 21 jours.

C'est pour gérer les retards de nos élèves.

Je vérifie quels élèves ont minimum 3 retards qui ne sont pas "ok" (pas justifié) et sur un laps de temps de 21 jours.

Avec ma requête SQL ci-joint, je ne vérifie que 21 jours en arrière et le but serait de vérifier sur un laps de temps de 21 jours.
SELECT DISTINCT * FROM studenten, retards WHERE studenten.student_stam = retards.retard_stam AND retards.retard_excuse >= '3' AND retard_ok = '0' AND retard_retdate >= CURDATE( ) -21 group by retards.retard_stam having count(retards.retard_ok) >2 ORDER BY student_naam ASC
Ici il ne retourne qu'un seul laps de 21 jours. D'aujoud'hui à 21 jours avant et je me demandais si il était possible de le faire pour chaque écart de 21 jours.
Exemple : Aujourd'hui, la requête devrait également m'afficher l'élève qui a été en retard 3 fois entre le 10 et le 31 février.

Mais je ne pense pas que cela soit possible :(

Re: afficher les lignes sur une période de 21 jours.

par Elie » 27 juil. 2014, 00:23

21 jours d'écart par rapport a quoi ? :)
`pubdate` <= SUBDATE('".date('Y-m-d')."', INTERVAL 21 DAY )
Ca c'est avant aujourd'hui - 21 jours.

Re: afficher les lignes sur une période de 21 jours.

par subran » 27 juil. 2014, 00:07

le champ pubdate est au format date 0000-00-00

J'ai essayé des requêtes sql mais je sèche... je pense pas qu'il est possible de sélectionner toutes les lignes qui ont "0" dans la colonne "ok" et sur un interval de temps (ici 21 jours).
Cela fonctionne bien sûr sur les 21 derniers jours mais là il me faudrait 21 jours d'écart.

Dès que j'ai le temps je creuse un peu plus

Re: afficher les lignes sur une période de 21 jours.

par Elie » 23 juil. 2014, 09:17

WHERE ok = 0 AND `pubdate` >= SUBDATE('".date('Y-m-d')."', INTERVAL 21 DAY )
Ton champ pubdate est sous quelle forme ?
Car sinon tu peux faire
strtotime('- 21 days', time());

Re: afficher les lignes sur une période de 21 jours.

par subran » 23 juil. 2014, 00:00

Merci :)

J'ai remplacé
AND pubdate >= CURDATE( ) -21
par
WHERE ok='0' AND SUBDATE(  'pubdate', INTERVAL 21 DAY )
Mais cela ne retourne rien... bon j'arrête pour ce soir :D Je poste dès que je trouve la solution

;-)
Sub

Re: afficher les lignes sur une période de 21 jours.

par Elie » 22 juil. 2014, 22:13

Regarde du coté INTERVAL et SUBDATE : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

afficher les lignes sur une période de 21 jours.

par subran » 22 juil. 2014, 22:05

Bonjour,

Je ne sais pas si c'est possible mais je souhaiterais faire une sélection des lignes de ma base de données selon la colonne "pubdate".

Le but est d'afficher les lignes dont la colonne "ok" est égal à "0" sur une période de 21 jours.

Avec la requête ci-dessous, je n'ai que les périodes de 21 jours depuis la date du jour et donc pas celles plus anciennes
WHERE ok='0' AND pubdate >= CURDATE( ) -21
Au cas où ce serait possible, dites-le moi mais je n'arrive pas à imaginer ce que cela pourrait être parce qu'il faudrait vérifier toutes les dates...

Merci d'avance,

Sub