IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête jours cycliques


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Requête jours cycliques
    Bonjour à tous,

    J'ai une requête à créer pouvant trier des évènements cycliques.

    J'ai une table comportant un champ EJOUR. Ce champ contient un simple chiffre selon le jour de la semaine (0 = lundi, .. , 6 = dimanche).

    Le but de la requête serait de sortir, si on est un mardi, les enregistrements du mardi, puis du mercredi, etc. Le lendemain, sortir les événements du mercredi, jeudi, etc.

    Débutant en MySQL, je plante sur cette requête. J'ai testé avec ORDER BY et différents tests n'ont rien donnés de probant.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Tu peux t'en sortir avec la fonction date_format pour connaître le jour de la semaine que nous sommes : %w Numéro du jour de la semaine (0=Sunday..6=Saturday)

    Essaye avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM ma_table
    WHERE EJOUR IN (date_format( now( ) , '%w' ) + 1,  date_format( now( ) , '%w' ) + 2)
    Dans la requête la clause date_format( now( ) , '%w' ) + 1 te permet de spécifier le premier jour avec un décalage de 1 car dans MySql 0 correspond au dimanche et toi au lundi.
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Merci
    Merci de ton aide. J'apprécie beaucoup.

    Hélas, ça ne fonctionne pas. Lors du test, les données du dimanche sont toujours affichées en premier.

    Dans le pire des cas, seules les données du jour seront affichées

    Aujourd'hui Vendredi, on affiche :

    V S D L M M J

    Demain, Samedi, on affiche :

    S D L M M J V

  4. #4
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Autant pour moi je n'avais pas saisie la problématique.
    Pour résoudre le problème nous devons découper la requête en deux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    (SELECT (ejour - DATE_FORMAT(NOW(), '%w') + 1)%7 AS ordre, ejour
    FROM ma_table
    WHERE ejour >= DATE_FORMAT(NOW(), '%w') - 1)
    UNION
    (SELECT (ejour + DATE_FORMAT(NOW(), '%w') - 2) AS ordre, ejour
    FROM ma_table
    WHERE ejour < DATE_FORMAT(NOW(), '%w') - 1)
    ORDER BY ordre
    La première partie permet de sélectionner les jours contenus dans l'intervalle [jour de la semain, dimanche] et la deuxième partie [lundi, jour de la semaine[. Afin d'ordonner le résultat il faut définir un alias qui replace les bons jours dans l'ordre.

    Normalement la requête devrait fonctionner sinon il suffit de l'adapter un peu .
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Merci
    Désolé pour ces remerciements tardifs. Mon métier est tout autre que dans l'informatique et m'appelle souvent loin de chez moi dans des endroits où internet n'est pas disponible (oui, des endroits comme ça existent encore )

    Donc, merci beaucoup pour ton aide. Quelques adaptations et la requête fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Module VBA dans requête - jours ouvrés
    Par typouce dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/02/2015, 16h17
  2. [Remoting] Mise à jour cyclique des données
    Par MAt20 dans le forum Windows Forms
    Réponses: 16
    Dernier message: 14/04/2008, 15h10
  3. [...] doit utiliser une requête qui peut être mise à jour
    Par requiemforadream dans le forum ASP
    Réponses: 4
    Dernier message: 26/04/2005, 09h12
  4. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  5. [Petite requête] Nombre de transactions par jour
    Par Braim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo