Bonjour,
Voila je rencontre un petit problème avec mon code.
j'ai un tableau donnant les heures de travaux des différents agents sur un site et j'aimerai faire une requette qui me donne le temps mis par personne sur chaque site voila ce que j'ai comme données
nom code temps_work date_work operation site
user1 001 12h10 11/01/2018 connexion au site
user1 001 12h15 11/01/2018 en poste
user1 001 12h50 11/01/2018 deconnexion
user1 001 13h10 11/01/2018 connexion au site
user1 001 14h10 11/01/2018 en poste
user2 002 12h10 11/01/2018 connexion au site
user2 002 12h15 11/01/2018 en poste
user2 002 12h50 11/01/2018 deconnexion
user2 002 13h10 11/01/2018 connexion au site
user3 003 14h10 11/01/2018 en poste
user3 003 12h10 11/01/2018 connexion au site
user3 003 12h15 11/01/2018 en poste
user3 003 12h50 11/01/2018 deconnexion
user3 003 13h10 11/01/2018 connexion au site
user3 003 14h10 15/01/2018 en poste
user4 004 14h10 15/01/2018 en poste
user4 004 12h10 15/01/2018 connexion au site
user4 004 12h15 15/01/2018 en poste
user4 004 12h50 15/01/2018 deconnexion
user4 004 13h10 15/01/2018 connexion au site
user4 004 14h10 15/01/2018 en poste
Je veux une requete qui va me permettre d'obtenir un tableau avec le temps total passé par utilisateur sur le site
Quelqu'un a une idée?SVP
Bonjour.
Pour éviter les complications, tu devrais plutôt sauvegarder sous le format datetime
, ce qui te permettra de pouvoir mieux travailler ce type de données, ensuite pourquoi faire plusieurs lignes pour une même connexion ?
Je te conseillerais de créer des champs par exemple : login_at, poste_at, __logout_at__, de type datetime
à la place de tes champs temps_work
, date_work
operation site
(?).
Car le problème avec ta méthode actuelle, c'est que tu vas avoir 3 fois plus d'enregistrements pour chaque utilisateur, alors que là, il n'aura qu'un enregistrement à chaque fois qu'un utilisateur se connecte et il sera plus simple de sélectionner le dernier enregistrement créé pour un utilisateur, que de devoir en sélectionner 3 par utilisateur.
Merci Lartak sauf en effet les informations viennent d'une base de donnée déjà programmé en système je veux dire que je ne peux modifier la structure de la base de donnée car ç'est la base de données d'un pointeur d'empreinte digital donc on m'a demandé je peux faire une requete SQL pour ressortir la durée de travail des utilisateurs sur sur le site.
Étant donné que le format des dates et heures ne correspond pas à la norme de SQL, ça m'étonnerait que tu puisse faire ça juste dans la requête SQL, il te faudra forcément le faire après le traitement de la requête SQL.
Ok su possons cela soit possible que j echange le format moon soucis se trouve au niveau de la requete qui va ressortir cela je ne sais pas ssi vous comprennez un peu je n'arrive pas à trouvé la requette qui va me ressortir le temps mis par chaqu'un site sur un site
Il y a un second problème dans la struture de cette table, c'est le fait qu'il n'y ait pas d'identifiant unique pour chaque session, c'est à dire qui permettrait de différencier la seconde ligne et la quatrième par exemple, étant donné que ces deux lignes correspondent à un même utilisateur.
Du coup je ne vois pas comment tu pourrais faire regrouper les trois premières lignes ensembles sans que les deux suivantes soient prises en compte.
Tout du moins avec la structure actuelle de la table.
Bonjour.
Je suis nouvel utilisateur
Je ne sais pas ce que tu appelles exactement nouvel utilisateur, mais quand je vois :
Inscrit Il y a 2 mois
Pour moi ça ne signifie pas nouvel utilisateur.
Je dois calculer la différence entre la dernière ligne et l'avant dernière d'une colonne, puis mettre le résultat dans une autre colonne.
Commences déja par nous montrer la structure de la table concernée et pas seulement le nom des colonnes, mais également leur type de donnée.
Par contre, ce que tu demandes, ce serait de faire un update ainsi qu'un select de deux lignes en un seul appel à la base de données.
Sauf qu'un update et un select dans une même table via un seul appel à la base de données, est techniquement infaisable :
Une limitation importante des sous-requêtes est que l'on ne peut pas modifier un élément d'une table que l'on utilise dans une sous-requête.
Exemple : vous trouvez que Callune ressemble quand même fichtrement à Cawette, et ses poils sont aussi longs. Vous vous dites donc que vous auriez dû également modifier la race de Callune. Vous essayez donc la requête suivante :
UPDATE Animal SET race_id =
(SELECT race_id FROM Animal WHERE nom = 'Cawette' AND espece_id = 2)
WHERE nom = 'Callune';
Malheureusement :
ERROR 1093 (HY000): You can't specify target table 'Animal' for update in FROM clause
La sous-requête utilise la table Animal. Or, vous cherchez à modifier le contenu de celle-ci. C'est impossible !
Source: Jointures et sous-requêtes : modification de données - Administrez vos bases de données avec MySQL - OpenClassrooms.