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 :

Obtenir un emploi du temps en une seule requête, possible ou pas ?


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut Obtenir un emploi du temps en une seule requête, possible ou pas ?
    bonjour,

    Actuellement pour obtenir un emploi du temps simplifié (en gros le nombre de mission par créneau d'heure) , je n'arrive pas à le faire en une requête, je dois passer par une boucle dans le language hôte (qui fait une requête par salarié (et comme j'ai 250 sal, ça fait 250 req....).
    bref j'arrive pas à optimiser. JE préfèrerai avoir tout en une seul requpete mais j'ai tourné le problème dans tous les sens je n'y arrive pas.

    au final, je veux (0 pour libre, 1 pour occupé) :

    créneau : 8 9 10

    marie : 0 1 0
    pierre : 1 0 2

    et ma table contient ça (personne, debut_mission,fin_mission):
    (marie,09:0,09:40)
    (pierre,08:00;08:59)
    (pierre,10:00,10:15)
    (pierre,10:30,10:40)

    avez-vous une idée qui m'éviterait une requête par personne ?
    Je préfèrerai une requête bourrin d'une seul coup plutôt que l'itération côté language host!

    merci à vous

  2. #2
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut
    bon finalement j'y suis arrivé !

    voiçi la requete de malade (pour 2 salariés et 4 créneaux) (résultats en pj)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT liste_employes,
    SUM(case when ('06:00:00' between heure_debut::text AND heure_fin::text) or ('06:59:59' between heure_debut::text AND heure_fin::text) then 1 else 0 end) AS "6h",
    SUM(case when ('07:00:00' between heure_debut::text AND heure_fin::text) or ('07:59:59' between heure_debut::text AND heure_fin::text) then 1 else 0 end) AS "7h",
    SUM(case when ('08:00:00' between heure_debut::text AND heure_fin::text) or ('08:59:59' between heure_debut::text AND heure_fin::text) then 1 else 0 end) AS "8h",
    SUM(case when ('09:00:00' between heure_debut::text AND heure_fin::text) or ('09:59:59' between heure_debut::text AND heure_fin::text) then 1 else 0 end) AS "9h"
      FROM calevent_item
    WHERE liste_employes like '%,2910,%' or liste_employes like '%,1,%'
    GROUP BY liste_employes

    Je kiffe le sql !
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 11/03/2012, 23h40
  2. Réponses: 2
    Dernier message: 17/02/2010, 22h32
  3. Réponses: 2
    Dernier message: 31/01/2009, 21h49
  4. Réponses: 4
    Dernier message: 30/07/2008, 19h29
  5. Ordonner avec une sous requête ,possible ou pas?
    Par worm1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/02/2007, 07h23

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