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 :

Selectionner le 1er Enregistrement


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut Selectionner le 1er Enregistrement
    Salut tout le monde

    j'aimerais calculer le nombre de retards d'un employé
    On ne prend en considération un retard que quand l'employé dépasse 8:15:00.
    sachant que je dispose de la base de données suivante:

    MAtricule | Nom | MaDate | Etat
    ---------------------------------------
    1 | popo | 01/01/2001 08:00 | Entree
    1 | popo | 01/01/2001 08:10 | Sortie
    1 | popo | 01/01/2001 08:13 | Entree
    2 | papa | 01/01/2001 08:15 | Entree
    3 | pcpc | 01/01/2001 08:30 | Entree
    1 | popo | 01/01/2001 12:00 | Sortie
    2 | papa | 01/01/2001 13:00 | Sortie
    3 | pcpc | 01/01/2001 13:15 | Sortie



    P.S: Je travaille avec ASP.NET

    voila la requete que j'ai pu faire donc si vous pouvez m'aider merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
    CONVERT(varchar(20), MaDate, 108) As [time],
    FROM Matable
     
    WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
    AND readerdescription like 'Entree'
    GROUP BY MAtricule, Nom, Madate
    HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'

    ça marche mais le problème c'est qu'elle me retourne pour un employé tous les entrées apré 08h15, é moi je veux seulement le premier

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    ça marche mais le problème c'est qu'elle me retourne pour un employé tous les entrées apré 08h15, é moi je veux seulement le premier
    Vu votre requête, vous vous intéressez aux entrées d'un jour précis (le '02/01/2007' en l'occurrence). Etant donné que seule la 1re entrée d'un employé vous intéresse, cela semblerait signifier qu'un employé pourrait être entré plus d'une fois par jour. Qu'en est-il ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Vu votre requête, vous vous intéressez aux entrées d'un jour précis (le '02/01/2007' en l'occurrence). Etant donné que seule la 1re entrée d'un employé vous intéresse, cela semblerait signifier qu'un employé pourrait être entré plus d'une fois par jour. Qu'en est-il ?


    Oui oui c'est bien ca...j'ai meme donner l'exemple du code numero 1.
    l'employé peut alors entrer et sortire Comme il veut...le resultats c'est pour la fin du moi ^^


    Merci D'avance

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut
    Voila La reponce d'avan finale ^^


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) 
     
    FROM Matable
    WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
    and (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
    AND readerdescription = 'Entree'
    GROUP BY MAtricule, Nom
    est ce possible d'executer la requete pour tout un mois, pas seulment pour un seul jour donné

    alors pour chaque employé On aura...nombre de retards é aussi Le cumule des retards

    Merci beaucoup !

  5. #5
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Voila La reponce d'avan finale ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) 
     
    FROM Matable
    WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
    and (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
    AND readerdescription = 'Entree'
    GROUP BY MAtricule, Nom
    Vous risquez d'avoir une erreur, car la clause SELECT mentionne l'attribut Madate, lequel doit faire partie du GROUP BY.

    Edit : En fait, votre requête fonctionne.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut
    Non non la requee marche impec...
    une variane(temps) ca va rien regroupé...tout est different
    la qst mntn c'est pour l'affichage des information de retard (nombreRetard et cumule) de chaque employé dans une seule ligne/employé

  7. #7
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonjour Amikove,

    Qu'entendez-vous exactement par nombre de retards d'un employé ?

    a) Le nombre de fois N où, pour cet employé et pour une journée donnée, il y a dans la table une ligne pour laquelle Etat = "entree" et la partie Time de Madate est > "08:15:00" ?

    b) Ou bien s'agit-il seulement du nombre J de jours dans le mois où un employé est arrivé après cette heure-la ?

    c) Ou encore le produit de N et J ?

    d) Ou encore autre chose ?

    Merci de formuler la règle précise, voire de fournir un exemple exhaustif sous forme de table, décrivant tous les retards de Toto ainsi que le résultat chiffré que vous attendez.

    Concernant le cumul, même chose. Par ailleurs, existe-t-il une heure limite, pour traiter du cas où, tel jour, Toto est entré après 8h15 mais n'est pas sorti ? Cette heure a-t-elle automatiquement renseignée par le système ?

    Bonne fin de semaine

Discussions similaires

  1. [Conception] probleme 1er enregistrement
    Par ahmet57 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/06/2006, 14h06
  2. Conserver 1er enregistrement trouvé
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 27/05/2006, 20h00
  3. Réponses: 7
    Dernier message: 27/03/2006, 19h50
  4. [SQL] Requête JOIN mais seulement 1er enregistrement ?
    Par tamagotchi dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/03/2006, 12h25
  5. Réponses: 3
    Dernier message: 06/12/2005, 13h44

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