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 :

[REQUETE SQL -SELECT] Compter le nombre de jours.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Par défaut [REQUETE SQL -SELECT] Compter le nombre de jours.
    Bonjour,

    Je suis en train de développer une application pour gérer les arrêts maladie de mon entreprise.

    Mais afin de vérifier quelques détails avant de valider l'arrêt. Il me faut compter le nombre de jour dont la personne a été arrêté sur l'année N-1.

    Comment faire pour compter le nombre de jour sur une requête de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM arret
    Where arret.matricule = @matricule
    and arret.date_debut BETWEEN @date_debut_n1 AND @date_debut;
    Pouvez-vous m'aider?
    Merci,
    .Matthieu

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il nous manque peut-être un peu d'informations pour commencer à réfléchir à une réponse...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Merci de spécifier la structure des tables.

    Si vos arrêts sont enregistrés sous la forme de période (debut-fin), vous pouvez effectuer la somme de la difference entre fin et début.

    Si vous arrêts son enregistrés sous forme d'une liste de jours, vous pouvez faire un compte.

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Par défaut
    EDITER ::

    En fait je peux le faire avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEDIFF(date_deb,date_fin)
    Mais comment faire pour compter dans une seule requête le nombre de jour d'arrêt total sur l'année N-1?

    J'ai un salarié (MATRICULE),
    Une année N-1,
    Des arrêts sur N-1,
    Et je voudrais la somme totale en jours des arrêts de N-1.

    STRUCTURE DES TABLES :

    Salarié :
    MATRICULE int,
    nom varchar(50),
    prenom varchar(50)


    Arret :
    numeros_arret int,
    date_debut DATETIME,
    date_fin DATETIME
    matricule_salarie int <=== Clé étrangère




    Comment faire?
    Merci,
    .Matthieu

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Vous n'avez peut être jamais utilisé de fonction d'agrégat (sum, count, min, ...). Dans votre cas, et comme vous l'avez dit, il s'agit de faire une somme.

    Voir ce cours pour maitriser la chose : http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L0

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Par défaut
    J'essaye de faire une procédure stocké pour récupérer le nombre de jour de maintien de salaire auxquel le salarié à le droit en fonction du nombre de jour arrété sur l'année N-1 :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    CREATE PROCEDURE salarie_ma_disponible @matricule int,@date_debut datetime, @date_debut_n1 datetime AS
    BEGIN
    --Dclaration de la variable d'accueil du Nbre de jour MA auxquel le salari  le droit
    DECLARE 
    	@nbre_ma int,
    	@temp int
     
    	--Vrification si le MATRICULE existe dans la BDD
    	IF EXISTS (SELECT * from personnel where matricule = @matricule)
    	BEGIN
     
    		--Vrification si le salari a eu un arret sur l'anne N-1
    		IF EXISTS (SELECT * from arret where matricule = @matricule and date_debut BETWEEN @date_debut_n1 and @date_debut)
    		BEGIN
    			--Rcupration du nombre de jour d'arrt sur N-1
    			SELECT @temp = SUM(DATEDIFF(day,date_debut,date_fin)) 
    			from arret
    			where matricule = @matricule
    			AND date_debut BETWEEN @date_debut_n1 AND @date_debut
     
    			--Calcul du Nbre de jour de M.A. auxquel le salari  le droit
    			--SI arrt sur N-1 alors calcul 90 - TEMP = Nombre M.A.
    			IF (@temp > 0)
    			BEGIN
    				@nbre_ma = 90 - @temp --<== ERREUR LIGNE 25
    			END
    			--LE salari n'a pas le droit au M.A.
    			ELSE
    			BEGIN
    				@nbre_ma = 0 --<== ERREUR LIGNE 30
    			END
    		END
    		--Le salari n'a pas eu d'arret sur l'anne N-1
    		ELSE
    		BEGIN
    			--Il a donc droit  180 jours de M.A.
    			@nbre_ma=180
    		END
    	END
    	--Le matricule n'existe pas dans la BDD
    	ELSE
    	BEGIN
    		--Valeur de retour 0 <==SALARi INEXISTANT DANS BDD
    		return 0
    	END
     
    --Valeur de retour Nbre de M.A. auxquel le salari  le droit
    return @nbre_ma
    END --<== ERREUR LIGNE 49

    Mais j'ai des erreurs lors de l'exécution du CREATE ::

    MESSAGE ERREUR (J'ai commenter les lignes avec <== ERREUR LIGNE "N") ::

    Msg102, Niveau15, tat1, Procduresalarie_ma_disponible, Ligne25
    Syntaxe incorrecte vers '@nbre_ma'.
    Msg102, Niveau15, tat1, Procduresalarie_ma_disponible, Ligne30
    Syntaxe incorrecte vers '@nbre_ma'.
    Msg102, Niveau15, tat1, Procduresalarie_ma_disponible, Ligne49
    Syntaxe incorrecte vers 'END'
    Je ne trouve pas ou il y a un problème dans ma procédure.

    .Matthieu

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Sans regarder en détail votre procédure, je pense qu'elle est inutile et que vous pouvez ramener les résultats souhaités en une requête.

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

Discussions similaires

  1. [SQL Server 2000] compter le nombre de jours
    Par soltani1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/07/2006, 14h59
  2. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  3. [POSTGRESQL] Requete SQL SELECT
    Par angusyoung34 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/02/2006, 09h30
  4. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 11h53
  5. [SQL][ACCESS]Compter le nombres d'enregistrement dans deux..
    Par pc152 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/06/2004, 12h30

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