Précédent   Forum du club des développeurs et IT Pro > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 17h20   #1
Michael REMY
Membre éclairé
 
Inscription : avril 2009
Messages : 671
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 671
Points : 395
Points : 395
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
Michael REMY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 18h13   #2
Michael REMY
Membre éclairé
 
Inscription : avril 2009
Messages : 671
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : avril 2009
Messages : 671
Points : 395
Points : 395
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 :
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
Type de fichier : jpg sql2.jpg (86,7 Ko, 4 affichages)
Michael REMY est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h59.


 
 
 
 
Partenaires

Hébergement Web