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 :

Jours qui n'ont pas de renseignement


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut Jours qui n'ont pas de renseignement
    Bonjour,

    J'ai une table occupation que l'on renseigne, elle contient le nom des personnes, la date et le nombre d'heures.
    J'aimerai faire une requête qui me ramène les jours pour lesquels y a pas d'heure de saisie.
    Pouvez vous me dire comment faire SVP.

    Merci

    Sebing

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 722
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Pour ça il faut une table calendrier qui servira de référence, avec toutes les dates de la période qui vous intéresse.
    Ensuite vous pourrez soit utiliser WHERE NOT EXISTS soit faire une jointure OUTER et tester que le résultat est nul.

    Exemple :
    CALENDRIER
    CA_id integer
    CA_date date
    CA_joursem char(8)

    OCCUPATION
    OC_id integer
    OC_libelle varchar(100)
    CA_id integer (FK)

    Requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select CA.CA_joursem
         , CA.CA_date
    from CALENDRIER CA
    where not exists
         (select 1
          from OCCUPATION OC
          where OC.CA_id = CA.CA_id)

  3. #3
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Merci pour votre aide.
    J'ai oublié de dire que c'est pour faire un rapport avec birt et que la table calendrier n'existe pas et je ne peux pas créer une table dans le logiciel.
    Cdlt
    Sebing

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 722
    Billets dans le blog
    10
    Par défaut
    En ce cas, peut être avez vous le droit de créer une CTE pour créer ce calendrier que vous alimenterez avec une requête récursive

    Faute de quoi c'est bigrement compliqué ! il faut trier les occupations par date, calculer l'écart entre les dates consécutives et en déduire les différentes dates manquantes. L'usine à gaz quoi

  5. #5
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Merci de m'aider.
    Je ne connais pas bien le CTE et je ne sais comment en faire pour créer ce calendrier.

    Merci encore

    Sebing

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 722
    Billets dans le blog
    10
    Par défaut
    Voici un exemple de requête récursive pour créer le calendrier, à adapter à votre SGBD, les fonctions dates étant très différentes d'un SGBD à l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- Création du calendrier 2016
       WITH CALENDRIER (VALSEQ, VALDAT, VALDAY) AS           
           (SELECT 0                                   
                 , DATE('2016-01-01')                  
                 , DAYOFWEEK_ISO('2016-01-01')         
            UNION ALL                                  
            SELECT VALSEQ+1                            
                 , DATE(VALDAT)+1 DAYS                 
                 , DAYOFWEEK_ISO(DATE(VALDAT)+1 DAYS)  
            FROM  CALENDRIER
            WHERE VALSEQ < 365)                        
       ;
    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    VALSEQ VALDAT          VALDAY 
         0 2016-01-01           5 
         1 2016-01-02           6 
         2 2016-01-03           7 
         3 2016-01-04           1 
         4 2016-01-05           2 
    etc...

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

Discussions similaires

  1. A ceux qui n'ont pas migré vers VB.NET
    Par bidou dans le forum VB 6 et antérieur
    Réponses: 153
    Dernier message: 12/12/2013, 14h33
  2. Réponses: 7
    Dernier message: 27/08/2008, 12h53
  3. Réponses: 4
    Dernier message: 08/06/2006, 14h18
  4. la liste des clients qui n'ont pas acheter aucun article ...
    Par TéBeSsI dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/02/2004, 15h57

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