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 :

Question sql


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut Question sql
    Bonjour,

    Je souhaite répondre en sql à la question suivante ? Nombre d'employé qui sont absents par jour ?

    Voici la table prendre_congé (#Num_salarié, #date_deb, #date_fin).
    Exemple : si dans la table, nous avons les valeurs suivantes :
    1 02/01/05 06/01/05
    3 04/01/05 05/01/05

    Nous devons obtenir :
    02/01/05 1
    03/01/05 1
    04/01/05 2
    05/01/05 2
    06/01/05 1


    Merci

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Il te faut une table Calendrier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT c.laDate, COUNT(*)
    FROM Calendrier c INNER JOIN Prendre_Conge p ON c.laDate BETWEEN #Date_deb AND #Date_fin
    GROUP BY c.laDate

    Pourquoi des # devant les noms de colonne ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pourquoi des # devant les noms de colonne ?
    A priori, ce serait des clés étrangères Enfin, c'est ainsi que je les note (sur papier, pas dans la base de données)

  4. #4
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Effectivement, ce sont 3 clés étrangères. Est ce que cette requete fonctionne sur une seule table.

    Merci

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par rico3434
    Effectivement, ce sont 3 clés étrangères. Est ce que cette requete fonctionne sur une seule table.

    Merci
    Au vue de la jointure ... non

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par rico3434
    Effectivement, ce sont 3 clés étrangères. Est ce que cette requete fonctionne sur une seule table.
    Si #date_deb et #date_fin sont des clés étrangères, cela veut dire qu'il y a une table calendrier ou équivalent quelque part, cette requête fonctionne en jointure avec cette table (qui ne s'appelle pas forcément Calendrier)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    J'envisageai de faire une auto-jointure. Est ce plus rapide en temps d'execution

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par rico3434
    J'envisageai de faire une auto-jointure. Est ce plus rapide en temps d'execution
    Quelle auto-jointure ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Au lieu de faire une jointure entre calendrier et prendre congé, faire une auto jointure avec prendre congé seulement avec date deb à comparer avec date deb et date fin. Les temps d'execution seront peut-etre different. Calendrier et prendre conge risque d'etre cree sur deux espaces physiques differents.

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec l'exemple du premier post tu n'obtiendras pas de ligne pour le 03/01/05 avec une auto jointure.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  11. #11
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    dans la table calendrier, est ce que tu as toutes les dates
    date
    02/01/05
    03/01/05
    04/01/05
    05/01/05
    06/01/05

    ou simplement comme dans le 1e post
    date deb date fin
    02/01/05 06/01/05
    04/01/05 05/01/05

    Est que avec une jointure entre les deux tables, jobtiens des infos pour le 03/01/05

  12. #12
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Oui la table Calendrier contient toutes les dates (éventuellement que les jours ouvrés, ou un flag pour les reconnaître...) et tu obtiendras le résultat pour toutes les dates.

    Mais j'avais cru comprendre que tes date_deb et date_fin étaient des clés étrangères, elles doivent donc pointer sur une autre table, je suppose...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  13. #13
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    oui, ce sont des clés etrangeres qui ne sont pas renseignées avec toutes les dates. On pourrait se passer de cette table date et avoir seulement
    les tables pilotes et prendre congé.
    Aujourd'hui, il n'y a pas toutes les dates dans la table prendre congé. Est ce que tu vois une autre solution ?

  14. #14
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    oui, ce sont des clés etrangeres qui ne sont pas renseignées avec toutes les dates

    Qui proviennent de quelles tables ? Je pense que la question de médiat est là ...

  15. #15
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    voici le schémé relationnel :

    salarie (Num_salarié, Nom_salarie,.....)
    prendre_congé (#Num_salarié, #date_deb, #date_fin)
    Date(#date_deb, #date_fin)

    Voici les données trouvées dans la table prendre_congé
    1 02/01/05 06/01/05
    3 04/01/05 05/01/05

    Voici les données trouvées dans la table salarié
    1 martin
    2 dupont
    3 durand

    Voici les données trouvées dans la table date
    02/01/05 06/01/05
    04/01/05 05/01/05

  16. #16
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Là, je ne comprends pas l'intéret de la table date ...

    Soit tu y insères toutes les dates (ce qui est néccessaire pour ta requête), soit tu n'as pas besoin de cette table ...

  17. #17
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Tofalu
    Là, je ne comprends pas l'intéret de la table date ...

    Soit tu y insères toutes les dates (ce qui est néccessaire pour ta requête), soit tu n'as pas besoin de cette table ...
    +1000
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  18. #18
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    je suis d'accord avec toi. Elle ne sert pas à grand chose. Mais elle existe. C'est pourquoi, je ne l'ai pas donnée au départ et je souhaite utiliser seulement la table prendre_congé. Est ce qu'il y a une solution avec cette seule table.

  19. #19
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    En pure SQL, non

    C'est à ton applicatif de gérer le calendrier en ayant les dates de début et de fin ...

  20. #20
    Nouveau membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Ok, en tout cas merci pour toutes vos réponses.

    J'ai deux solutions, soit je charge la table calendrier, soit je gère dans l'applicatif.

Discussions similaires

  1. Question SQL INNER JOIN (SQLCE)
    Par webgig2002 dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/06/2008, 02h52
  2. Question SQL Loader
    Par MoonUnit dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 08/10/2007, 18h31
  3. Réponses: 8
    Dernier message: 25/07/2007, 15h05
  4. Question : SQL dans VB excel
    Par aurele21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2007, 12h25
  5. Question SQL (facile) mais pas pour moi
    Par fabianrs dans le forum Langage SQL
    Réponses: 15
    Dernier message: 30/03/2006, 03h44

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