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

Développement SQL Server Discussion :

Extraction des anomalies du pointage


Sujet :

Développement SQL Server

  1. #1
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut Extraction des anomalies du pointage
    Bonjour a tous

    N’étant pas encore un professionnel en TSQL je reviens toujours dans ce forum vers nos expert pour m'aider sur cette demande

    j'ai un table du pointage d'effectif nommé "dbo.hoppoin"
    "
    pour que chaque pointage journalier d'un telle employer passe correctement il faut qu'il doit avoir deux colonne une prend la valeur "0" l'autre la valeur "1" pendant une seul journée (Entrée / sortie) voir l'imprime écran (colonne sens)
    il existe des cas d'anomalie ou il existe le 0 qui n'est pas suivi par la valeur 1 donc une entré sans sortie , je veux faire une extraction de ces cas
    chaque employer a une matricule colonne nommé "matri"
    ci joint le syntaxe du table dbo.hoppoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CREATE TABLE [dbo].[hoppoin](
    	[MATRI] [varchar](10) NOT NULL,
    	[DAT] [datetime] NOT NULL,
    	[HEURE] [varchar](4) NOT NULL,
    	[LECTEUR] [varchar](4) NULL,
    	[TYPEVE] [varchar](2) NULL,
    	[IMPUT] [varchar](16) NULL,
    	[DATTRAI] [datetime] NULL,
    	[HRETRAI] [smallint] NULL,
    	[DUREE] [smallint] NULL,
    	[SENS] [varchar](1) NULL,
    	[MODLEC] [varchar](1) NULL,
    	[DATMOD] [datetime] NULL,
    	[UTILMOD] [varchar](10) NULL,
     CONSTRAINT [i_hoppoin] PRIMARY KEY CLUSTERED 
    (
    	[MATRI] ASC,
    	[DAT] ASC,
    	[HEURE] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    merci pour vos aide
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ça commence mal

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Est-il possible qu'un pointage d'entrée soit effectué un jour, et le pointage de sortie le jour suivant ? (cas typique des employés travaillant la nuit).

    @++

  4. #4
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    on travaille avec des plages horaire pour l'équipe de nuit l'entrée est a 22:00 h--->0 et a 06:00h-->1

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Ça commence mal

    En effet, et ça ce n'est pas mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [MATRI] [varchar](10) NOT NULL,
    [HRETRAI] [smallint] NULL
    Sans compter la pléthore de varchar (1) varchar(2) etc... complètement aberrants

  6. #6
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    c'était pas a notre niveau la conception de la base

    il s'agit d'un solution du pointage acheter par un fournisseur

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    A quoi sert votre colonne HEURE ? votre colonne DAT étant déjà un DATETIME, avec donc la composante horaire ?

    sur le principe, afin de résoudre le problème des entrées/sortie à cheval sur deux jours calendaires soulevé par ElSuket, vous pouvez arbitraiment chercher les entrées pour lesquelles il n'existe pas de sortie dans les 10 (?) heures qui suivent :
    (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT A.MATRI, A.DAT
    FROM [dbo].[hoppoin] A
    LEFT JOIN [dbo].[hoppoin] B
        ON B.MATRI = A.MATRI
        AND DATEDIFF(HOUR, A.DAT, B.DAT) < 10
        AND B.SENS = 1
    WHERE A.SENS = 0
    AND B.MATRI IS NULL

  8. #8
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    merci aieeeuuuuu pour votre réponse
    vu que je suis débutant en transact je tient à présenter mes excuse pour cette question très conne mais il sert a quoi le left join dans ta requéte surtout que je suis sur la même table
    merci une autre fois

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    l'auto-jointure sert a chercher les sorties correspondantes au entrées (alias a)
    si la condition de jointure n'est pas remplie, c'est qu'il n'y a pas de sortie pour une entrée données. C'est ce que vous cherchez, d'où la jointure externe afin de conserver les lignes.
    on filtre ensuite dans le WHERE les lignes pour lesquelles la jointure n'est pas satisfaite.

    On pourrait remplacer l'auto jointure par une sous requete corélée dans un NOT EXISTSEn fonction de vos données (volume et répartition) et de vos indexs, l'une ou l'autre présentera de meilleures performances.

  10. #10
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    merci bien pour votre retour

Discussions similaires

  1. [SQL] extraction des différences de 2 select
    Par toxine dans le forum Langage SQL
    Réponses: 8
    Dernier message: 12/08/2005, 13h27
  2. Analyseur XML : extraction des caracteres spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/07/2005, 15h07
  3. Probleme d'extraction des champs nuls
    Par ETOKA dans le forum SQL
    Réponses: 2
    Dernier message: 17/01/2005, 11h03
  4. Extraction des phrases d'un Texte
    Par LE CHAKAL dans le forum Langage
    Réponses: 6
    Dernier message: 19/08/2002, 21h23

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