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 :

Déterminer le nombre d'utilisateurs simultanés à partir d'une table Access Log


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Déterminer le nombre d'utilisateurs simultanés à partir d'une table Access Log
    Bonjour,

    je ne suis pas un expert SQL, j'ai quelque bases et j'ai besoin d'aide pour écrire une requête SQL.
    J'ai une table qui enregistre les accès à une application qui y stocke notamment : Nom Utilisateur / Login Date / Logout Date.

    Je souhaite pouvoir déterminer le nombre d'utilisateurs simultanément à mon application pour savoir si le nombre de licences max (25) est atteint régulièrement dans une même journée ou nom.

    Je parviens à modéliser mon besoin, donc je me dis qu'un requête SQL pourrait me retourner un résultat (avec COUNT, INTERSECT...)

    Voici un exemple de données et de résultats attendus :

    Nom : 2020-05-26_12h17_24.png
Affichages : 233
Taille : 8,3 Ko

    Merci d'avance pour votre aide
    François

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Il suffit de compter le nombre de connexion encore effective pour chaque dateheere de login...

    Avec une telle table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE T_CONNEXION_CNX
    (CNX_ID                 INT IDENTITY PRIMARY KEY,
     CNX_USER_NAME          NVARCHAR(128) NOT NULL,
     CNX_DH_LOGIN           DATETIME NOT NULL,
     CNX_DH_LOGOUT          DATETIME);
    la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CNX_DH_LOGIN, (SELECT COUNT(*) 
                          FROM   T_CONNEXION_CNX 
                          WHERE  CNX_DH_LOGIN >= LOG_DH.CNX_DH_LOGIN AND CNX_DH_LOGOUT > LOG_DH.CNX_DH_LOGIN)
    FROM   T_CONNEXION_CNX AS LOG_DH
    Pour une démo avec des valeurs avec SQL Server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    -- insertion d'un jeu d'essais :
    WITH 
    N AS 
    (SELECT 0 AS I
     UNION ALL
     SELECT I + 1
     FROM   N
     WHERE  I < 9),
    M AS
    (SELECT N1.I + 10*N2.I AS I
     FROM   N AS N1
            CROSS JOIN N AS N2
            CROSS JOIN N AS N3)
    INSERT INTO T_CONNEXION_CNX (CNX_USER_NAME, CNX_DH_LOGIN)
    SELECT 'User ' + CAST(ABS(CHECKSUM(NEWID())) % 50 AS VARCHAR(32)),
           DATEADD(millisecond, ABS(CHECKSUM(NEWID())), '2020-05-01')
    FROM   M
    WHERE  I < 25 ;
     
    -- mise à jour date heure de logout :
    UPDATE T_CONNEXION_CNX
    SET CNX_DH_LOGOUT = DATEADD(millisecond, ABS(CHECKSUM(NEWID())) / 9876, CNX_DH_LOGIN)
     
    -- la requête finale
    SELECT CNX_DH_LOGIN, (SELECT COUNT(*) 
                          FROM   T_CONNEXION_CNX 
                          WHERE  CNX_DH_LOGIN >= LOG_DH.CNX_DH_LOGIN AND CNX_DH_LOGOUT > LOG_DH.CNX_DH_LOGIN)
    FROM   T_CONNEXION_CNX AS LOG_DH
    A +

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    il me semble que c'est plutôt un "inférieur à" qu'il faut pour l'heure de login non ?

    donc je verrais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  CNX_DH_LOGIN >= LOG_DH.CNX_DH_LOGIN AND CNX_DH_LOGOUT > LOG_DH.CNX_DH_LOGIN
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  CNX_DH_LOGIN <= LOG_DH.CNX_DH_LOGIN AND CNX_DH_LOGOUT > LOG_DH.CNX_DH_LOGIN

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci à vous deux, effectivement la première requête me donnait un résultat cumulatif, avec cette petite correction, les résultats semblent tout à fait cohérent.

    Encore merci.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    OUI, désolé !

    A +

Discussions similaires

  1. [AC-2010] Créer des répertoires à partir d"une table access via VBA
    Par HABILER dans le forum VBA Access
    Réponses: 3
    Dernier message: 24/09/2015, 11h27
  2. importer un nombre n de fichiers excel vers Une table access
    Par mimieloic dans le forum VBA Access
    Réponses: 33
    Dernier message: 22/05/2015, 15h45
  3. Réponses: 0
    Dernier message: 06/08/2009, 15h08
  4. Réponses: 0
    Dernier message: 14/04/2008, 22h50
  5. chargement d'un combobox à partir d'une table access
    Par sarah_s dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/05/2007, 17h19

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