p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre expérimenté
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2009
    Messages
    819
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : avril 2009
    Messages : 819
    Points : 525
    Points
    525

    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 expérimenté
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2009
    Messages
    819
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : avril 2009
    Messages : 819
    Points : 525
    Points
    525

    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, 22h40
  2. Réponses: 2
    Dernier message: 17/02/2010, 21h32
  3. Réponses: 2
    Dernier message: 31/01/2009, 20h49
  4. Réponses: 4
    Dernier message: 30/07/2008, 18h29
  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, 06h23

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