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

Langage SQL Discussion :

Calendrier sous forme de tableau par requête SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Calendrier sous forme de tableau par requête SQL
    Bonjour

    J'ai une table, appelons la agenda
    logon DateEvenement session Libelle
    0127 01-sept-08 Matinée Pas dispo
    0127 02-sept-08 Matinée Planifié
    0127 02-sept-08 Après-midi Planifié
    0127 02-sept-08 Soirée Pas dispo


    je souhaiterais, via une requête sql avoir le résultat suivant :

    logon DateEvenement session Libelle
    0127 01-sept-08 Matinée Pas dispo
    0127 01-sept-08 Après-midi
    0127 01-sept-08 Soirée

    0127 02-sept-08 Matinée Planifié
    0127 02-sept-08 Après-midi Planifié
    0127 02-sept-08 Soirée Pas dispo

    Comment puis je faire pour obtenir un calendrier avec tous les jours du mois et pour chacune des trois périodes de la journée ?

    Je n'y suis pas arrivé sous Access... grazie mille pour votre aide et aiguillages!

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 73
    Points
    73
    Par défaut
    Le problème vient du fait que tu n'as pas de table (ou tu ne nous l'as pas présentée) ou sont décrites les subdivisions de la journée (les "sessions possibles").

    Ton problème gagnerait en simplicité (et en espace occupé) si tu normalisais davantage ta base.

    Par exemple, tu peux créer une table SESSION contenant:
    1 | matin
    2 | après midi
    3 | soirée
    Tu crée également une table DATE avec la date de chaque jour
    1 | 01-sept-08
    2 | 02-sept-08
    Et enfin (ça ne participe pas vraiment à la solution, mais tant qu'a bien faire les choses, allons jusqu'au bout, ça peut te servir par la suite) une table ETAT:
    1 | Pas dispo
    2 | dispo
    3 | planifié
    Tu adaptes ta tables AGENDA en remplaçant les champs concernées par les clef étrangères vers chacune de ces tables. Elle devient alors:
    0127 | 1 | 1 | 1
    0127 | 2 | 1 | 3
    0127 | 2 | 2 | 3
    0127 | 2 | 3 | 1
    une entrée dans cette table AGENDA correspond bien à un état pour une session à une date donnée pour un logon. La clef primaire de cette table pouvant être composée de ces 3 premières colonnes.

    Maintenant que l'univers des possibles est défini par les 3 tables que nous avons créé, tu peux facilement obtenir la liste de toutes les sessions possibles en effectuant les produit cartésien de la table DATE et de la table session. Il te suffit ensuite de faire une jointure externe avec ta table AGENDA pour retrouver les sessions pour lesquelles tu as effectivement une entrée dans l'agenda. Enfin tu feras la jointure avec la table ETAT pour retrouver le libellé de l'état. Ce qui écrit en SQL donne la requète suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT A."logon" AS "logon",
             D."date" AS "dateEvenement",
             S."session" AS "session",
             E."libelle" AS "libelle"
    FROM DATE D 
            CROSS JOIN SESSION S
            LEFT OUTER JOIN AGENDA A ON D.id=A."date-id" AND S."id"=A."session-id"
            INNER JOIN ETAT E ON E."id"=A."etat-id"
    ORDER BY "D."date", S."id", A."logon"
    En espérant que ces modifications te soient possibles, car sinon, je vois difficilement comment obtenir le résultat que tu attends sans préciser quelque part que la journée est composée d'une matinée, d'une après midi et d'une soirée.

Discussions similaires

  1. Création tableau alimenté par requête SQL
    Par rgdu86 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/10/2008, 03h35
  2. recuperer une requete SQL sous forme de tableau EXCEL
    Par skillipo dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/12/2007, 17h45
  3. Réponses: 2
    Dernier message: 06/07/2007, 11h21
  4. Récupération d'une requête sous forme de tableau
    Par le--handballeur dans le forum iReport
    Réponses: 2
    Dernier message: 01/08/2006, 15h56
  5. [MySQL] Remplir un tableau par requêtes sql
    Par Melekitto dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/02/2006, 17h30

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