Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SOS - problème de requête

10 réponses
Avatar
Loïc Bourdon
Bonjour,
J'ai une table de séjours avec un identifiant de personne qui comporte
notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure de
sortie. On me demande d'afficher le nombre de présents pour chaque jour de
l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et là,
je ne sais pas du tout comment faire. Le format pour les heures est 720 pour
7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?

Merci
Ptitlouis

10 réponses

Avatar
Jerome PAULIN
Loïc Bourdon a écrit :
Bonjour,
J'ai une table de séjours avec un identifiant de personne qui comporte
notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure de
sortie. On me demande d'afficher le nombre de présents pour chaque jour de
l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et là,
je ne sais pas du tout comment faire. Le format pour les heures est 720 pour
7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?

Merci
Ptitlouis





Quelle système de base de données ?

Tes heures ne sont pas définies comme des temps, mais comme des entier ?

gg
Avatar
Loïc Bourdon
"Jerome PAULIN" a écrit dans le message
de news: esr7pu$pa7$
Loïc Bourdon a écrit :
> Bonjour,
> J'ai une table de séjours avec un identifiant de personne qui


comporte
> notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure


de
> sortie. On me demande d'afficher le nombre de présents pour chaque jour


de
> l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et


là,
> je ne sais pas du tout comment faire. Le format pour les heures est 720


pour
> 7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?
>
> Merci
> Ptitlouis
>
>

Quelle système de base de données ?

Tes heures ne sont pas définies comme des temps, mais comme des entier ?

gg


Bonjour,
Le SGBDR est assez exotique (DBQ) mais utilise le SQL standard. La colonne
heure est un smallint.
Avatar
Côme de Christen
C'est juste la présentation (900 au lieu de 09h00) qui te pose souci ?
Tu peux dans ce cas très facilement créer une petite table Horaire qui gère la
correspondance (900 -> 09h00) pour toi et faire une jointure dans ton SQL
Avatar
Jerome PAULIN
Loïc Bourdon a écrit :
"Jerome PAULIN" a écrit dans le message
de news: esr7pu$pa7$

Loïc Bourdon a écrit :

Bonjour,
J'ai une table de séjours avec un identifiant de personne qui





comporte

notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure





de

sortie. On me demande d'afficher le nombre de présents pour chaque jour





de

l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et





là,

je ne sais pas du tout comment faire. Le format pour les heures est 720





pour

7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?

Merci
Ptitlouis





Quelle système de base de données ?

Tes heures ne sont pas définies comme des temps, mais comme des entier ?

gg



Bonjour,
Le SGBDR est assez exotique (DBQ) mais utilise le SQL standard. La colonne
heure est un smallint.






il faut transformer tes dates/heures d'entree et de sortie en minutes
(histoire d'etre homogène) et ensuite tester si, a la minute qui
t'intéresse la personne etait deja entree mais pas encore sortie.

Soit X la date/heure ou s'effectue l'évaluation
Soit E la date/heure d'entrée
Soit S la date/heure de sortie

convertir E,S et X en minutes

et recherche les lignes ou E > X > S (ce sont peut etre des >= qu'il
faut utiliser)

Ca doit se faire pas trop difficilement avec les fonctions de gestion
des date et des CASE() ou IF()

gg
Avatar
Côme de Christen
Oups ! Pas forcément bien pigé la question moi , désolé
Oui il faut espérer que le SGBD ait un langage suffisamment étoffé.
Sinon pas trop le choix , logique applicative
Avatar
ALain Montfranc
Loïc Bourdon a écrit
Bonjour,
J'ai une table de séjours avec un identifiant de personne qui comporte
notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure de
sortie. On me demande d'afficher le nombre de présents pour chaque jour de
l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et là,
je ne sais pas du tout comment faire. Le format pour les heures est 720 pour
7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?

Merci
Ptitlouis



C'est pas plus dur que pour le faire jour par jour, tu rajoutes juste
une condition du type :

( date_entree < date or ( date_entree == date && heure_entree <= 900 ))
and
( date_sortie > date or ( date_sortie == date && heure_sortie >= 900 ))
Avatar
Fred Brouard - SQLpro
Loïc Bourdon a écrit :
Bonjour,
J'ai une table de séjours avec un identifiant de personne qui comporte
notamment 4 colonnes : Date entrée, heure entrée, date de sortie, heure de
sortie. On me demande d'afficher le nombre de présents pour chaque jour de
l'année (ça ça va...) mais aussi présents à 9h00, 12h00, 17h00, 20h00 et là,
je ne sais pas du tout comment faire. Le format pour les heures est 720 pour
7h20 ou 1115 pour 11h15...Pouvez-vous mayday mayday mayday svp ?

Merci
Ptitlouis




ajoutez à votre modèle de données un table avec en clef toutes les dates
heures en fraction :
DATEx 9h
DATEx 12h
DATEx 17h
DATEx 20h
DATEx + 1jour 9h
DATEx + 1jour 12h
DATEx + 1jour 17h
DATEx + 1jour 20h

dès lors une simple projection par jointure à ces lignes vous donnera
les comptage de présence, absences, etc...

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Loïc Bourdon
C'est pas plus dur que pour le faire jour par jour, tu rajoutes juste
une condition du type :

( date_entree < date or ( date_entree == date && heure_entree <= 900 ))
and
( date_sortie > date or ( date_sortie == date && heure_sortie >= 900 ))




Merci Alain, ça marche nickel...

Ptitlouis
Avatar
ALain Montfranc
Loïc Bourdon a écrit
C'est pas plus dur que pour le faire jour par jour, tu rajoutes juste
une condition du type :

( date_entree < date or ( date_entree == date && heure_entree <= 900 ))
and
( date_sortie > date or ( date_sortie == date && heure_sortie >= 900 ))




Merci Alain, ça marche nickel...




PS: si tu veux automatiser le truc (pour ne pas faire n requetes) tu
cree une table avec les horaires de calcul (900, 1200, 1700, 2000) et
tu fais une jointure de cette table avec ta requete initiale
Avatar
Loïc Bourdon
PS: si tu veux automatiser le truc (pour ne pas faire n requetes) tu
cree une table avec les horaires de calcul (900, 1200, 1700, 2000) et
tu fais une jointure de cette table avec ta requete initiale




Merci mais c'est déja parti :O))