Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2578 connectés 

  FORUM HardWare.fr
  Programmation

  question SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question SQL

n°87645
sisicaivra​i
Life is Beautifullll
Posté le 09-01-2002 à 23:41:48  profilanswer
 

on peut faire ca ?
(le but est de connaitre tous les login de temps de connex maximum)
 
SELECT login from connexions HAVING sum(duree)= (SELECT sum(duree) AS time from connexions HAVING MAX(time))
 
edit : ok le group by était inutile ;)

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

mood
Publicité
Posté le 09-01-2002 à 23:41:48  profilanswer
 

n°87646
sisicaivra​i
Life is Beautifullll
Posté le 09-01-2002 à 23:48:47  profilanswer
 

j'ai meme po peur du bide :o

n°87647
Stligar
Posté le 09-01-2002 à 23:49:32  profilanswer
 

:wahoo:

n°87648
sisicaivra​i
Life is Beautifullll
Posté le 09-01-2002 à 23:54:38  profilanswer
 

y a personnes a qui ca dit quelque chose...

n°87649
bardass
TEUBDEFER
Posté le 09-01-2002 à 23:56:19  profilanswer
 

défini un peu mieux ce qu'est le temps de connecion maxi


---------------
à mon âge, on ne me suce plus, on me mâche
n°87650
joce
Architecte / Développeur principal
"BugHunter"
Posté le 09-01-2002 à 23:56:48  profilanswer
 

comprends pas ce que tu veux faire :)
 
(le deuxième HAVING est plus que louche pour moi en tout cas)

 

[edtdd]--Message édité par joce--[/edtdd]


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°87651
sisicaivra​i
Life is Beautifullll
Posté le 09-01-2002 à 23:59:01  profilanswer
 

et bien je veux lister tous les logins avec le temps de connexion qui est le plus grand
 
merci de participer :)
 
PS : pas sympa le move....

n°87652
deweb
new bee
Posté le 09-01-2002 à 23:59:49  profilanswer
 

et
 
SELECT login from connexions group by login ORDER BY duree DESC LIMIT 0,50
 
?
(ou time à la place de duree)

n°87653
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 00:02:14  profilanswer
 

non car malheureusement je ne dois sortir que les login de temps de connexion le plus grand
 
c'est un sale exo theorique, bien sur en pratique ce serait plus tranquille  :sweat:
 
et de plus je dois sommer les temps de connexion, la table connexion n'est qu'un log

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°87654
bardass
TEUBDEFER
Posté le 10-01-2002 à 00:02:35  profilanswer
 

dans ce cas, il y a plus simple :
Select Login, Max(Time)
From Connexion
group by Login


---------------
à mon âge, on ne me suce plus, on me mâche
mood
Publicité
Posté le 10-01-2002 à 00:02:35  profilanswer
 

n°87655
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 00:03:37  profilanswer
 

bardass a écrit a écrit :

dans ce cas, il y a plus simple :
Select Login, Max(Time)
From Connexion
group by Login  




je dois sommer
le temps total de connexion n'est pas donné

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°87656
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 00:05:21  profilanswer
 

la table connexion contient les logs du genre : login, date, heure, duree de connexion

n°87657
bardass
TEUBDEFER
Posté le 10-01-2002 à 00:06:31  profilanswer
 

au dodo
ce sera pour demain
 :hello:


---------------
à mon âge, on ne me suce plus, on me mâche
n°87658
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 00:06:52  profilanswer
 

bardass a écrit a écrit :

au dodo
ce sera pour demain
 :hello:  




 :hello:

n°87693
wouatouwou​atou
Posté le 10-01-2002 à 06:09:51  profilanswer
 

salut à tous...
De retour pour un petit passage seulement... :D
 
déjà, un group by sur une donnée lorsqu'on ne retourne que cette donnée... ben... fo pas faire car inutile... :D
 
le truc de bardass me semble correcte...
 
Si tu dois sommer les durees pas login... alors ou est le maximum ?
Pige pas trop ton pb. :??:

n°87723
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 10:06:09  profilanswer
 

sisicaivrai a écrit a écrit :

la table connexion contient les logs du genre : login, date, heure, duree de connexion  




il est là mon probleme :  
je dois d'abord pour chaque login sommer son temps total de connexion, et puis afficher le ou les logins dont le temps de connexion est le plus grand
et uniquement celui là (ceux la), pas question de faire un order by et de prendre que le 1er :(

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°87755
irulan
Posté le 10-01-2002 à 10:55:10  profilanswer
 

SELECT login, sum(duree) FROM connexions
  GROUP BY login
  HAVING max(duree) = (SELECT max(duree) from connexions)
 
Avec ça tu obtiendras un truc de ce genre :
 
LOGIN        SUM(DUREE)
-----        ----------
AZERT        15206
YUIOP        2630
QSDFG        98563
 
où AZERT, YUIOP et QSDFG ont, parmi leur différentes durées de connexions, une durée égale à la durée de connexion maximale...
C'est ça que tu voulais ?
(j'ai testé cette requête sur Oracle, ça marche)

 

[edtdd]--Message édité par irulan--[/edtdd]

n°87761
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 10:58:40  profilanswer
 

pas tout a fait irulan :hello: , ce que je voudrais :  

Code :
  1. table:
  2. login   date           duree
  3. x       21/10/2001      15
  4. x       22/10/2001      10
  5. y       21/10/2001       5
  6. y       23/10/2001       5
  7. z       20/10/2001       25
  8. resultat :
  9. login
  10. x
  11. z


 :jap:
 
il doit manquer un truc a droite :
SELECT login from connexions HAVING sum(duree)= (SELECT sum(duree),login AS time from connexions GROUP BY login HAVING MAX(time))
non, ca va pas a cause du sum(duree)=select multiple :(
on peut faire un max(sum(duree)) ?
 
:??:

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°87821
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 13:11:33  profilanswer
 

SELECT Login,Max(Durée)  
FROM Connexions,Abonnements  
WHERE Max(Durée) IN  
(SELECT Login,Sum(Durée)  
FROM Connexions  
GROUP BY Login)  
 
?

n°87876
irulan
Posté le 10-01-2002 à 16:23:20  profilanswer
 

Je ne pense pas que tu puisses faire ça en une seule requête SQL : un MAX(SUM(DUREE)) n'est pas possible.
 
Autre chose, quand tu utilises MAX(duree), ça ne te sort que la valeur MAXIMALE présente dans la colonne duree, en aucune façon ça ne représente la somme des durées.
 
Donc dans tous les cas => blocked !

n°87877
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 16:30:35  profilanswer
 

en fait cette question fait partie de l'examen de l'an passé du cours que j'ai demain :(
 
il y a un corrigé avec, mais il semble complètement faux :(
 
leur réponse :  

Code :
  1. select Login
  2.   from Connexions
  3. group by Login
  4. having Sum(Durée) = (select Max(Durée)
  5.                        from Connexions
  6.                       group by Login);


notez le group by inutile, que j'avais repris dans ma solution du coup...
 
ils ont du mal exprimer ce qu'ils voulaient, car ici il semble prendre comme duree total sommée =max des durees partielles

n°87881
AlphaT
Posté le 10-01-2002 à 16:39:20  profilanswer
 

irulan a écrit a écrit :

Je ne pense pas que tu puisses faire ça en une seule requête SQL : un MAX(SUM(DUREE)) n'est pas possible.




 
Sur Oracle 7 et + les requêtes d'agrégation imbriquées sont possibles alors que ce n'est pas encore le cas avec PostgreSQL ( :??: )
 
On peut très bien faire SELECT AVG(MAX(SALAIRE)) FROM EMP; et faire aussi SELECT MAX(AVG(SALAIRE)) FROM EMP;

 

[edtdd]--Message édité par AlphaT--[/edtdd]

n°87883
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 16:43:26  profilanswer
 

AlphaT a écrit a écrit :

 
 
Sur Oracle 7 et + les requêtes d'agrégation imbriquées sont possibles alors que ce n'est pas encore le cas avec PostgreSQL ( :??: )
 
On peut très bien faire SELECT AVG(MAX(SALAIRE)) FROM EMP; et faire aussi SELECT MAX(AVG(SALAIRE)) FROM EMP;  
 
 




et ici faire un max(sum(duree)) donnerait ce que je cherche?

n°87963
jupiler
Un cousin...
Posté le 10-01-2002 à 18:21:29  profilanswer
 

essaye d'inverser le problème.
 
calcul le temps max de connexion et recupère les logins correspondants.
 
 
essaye:
select max(sum(t1.duree)),distinct t1.login from table t1, table t2
where t1.login = t2.login
group by t1.login
 
 
 
mais sinon, en une seule requete, c'est pas évident


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°87973
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 18:27:38  profilanswer
 

jupiler a écrit a écrit :

essaye d'inverser le problème.
 
calcul le temps max de connexion et recupère les logins correspondants.
 
 
essaye:
select max(sum(t1.duree)),distinct t1.login from table t1, table t2
where t1.login = t2.login
group by t1.login
 
 
 
mais sinon, en une seule requete, c'est pas évident  




je suis d'accord sur le principe, mais je ne vois pas bien ce que tu fais :sweat:

n°87976
gizmo
Posté le 10-01-2002 à 18:33:28  profilanswer
 

sisicaivrai a écrit a écrit :

en fait cette question fait partie de l'examen de l'an passé du cours que j'ai demain :(
 
il y a un corrigé avec, mais il semble complètement faux :(
 
leur réponse :  

Code :
  1. select Login
  2.   from Connexions
  3. group by Login
  4. having Sum(Durée) = (select Max(Durée)
  5.                        from Connexions
  6.                       group by Login);


notez le group by inutile, que j'avais repris dans ma solution du coup...
 
ils ont du mal exprimer ce qu'ils voulaient, car ici il semble prendre comme duree total sommée =max des durees partielles  




 
leur réponse est tout a fait correcte, je vois pas ce qui te dérange dedans. Pour info, le group by fait office de sum...

n°87978
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 18:36:19  profilanswer
 

gizmo a écrit a écrit :

 
 
leur réponse est tout a fait correcte, je vois pas ce qui te dérange dedans. Pour info, le group by fait office de sum...  




comment ca ils somment avec group by?  :sweat:
 
select Login
 from Connexions
group by Login c utile, ca?
having Sum(Durée) = (select Max(Durée)
                      from Connexions
                     group by Login);

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°87980
gizmo
Posté le 10-01-2002 à 18:38:08  profilanswer
 

ben oui c'est utile! tout comme le second, ils ont le même rôle...

n°87981
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 18:38:55  profilanswer
 

gizmo a écrit a écrit :

ben oui c'est utile! tout comme le second, ils ont le même rôle...  




explique moi stp, je ne vois pas :sweat:

n°88102
gizmo
Posté le 10-01-2002 à 23:03:28  profilanswer
 

nope, oublie, j'ai dis une connerie, c'est pas généralisé du tout comme fonction du group by
 
Une solution correct, c'est effectivement celle d'alphaT, a savoir  

Code :
  1. SELECT login FROM connexions
  2. GROUP BY login
  3. HAVING sum(duree)=max((sum)duree)


 
mais il faut que la db que tu utilises accepte les agrégations imbriquées, ce qui n'est pas la cas de mysql ni access.
 
Mais il faut voir ce que ton prof veux. Tiens au fait, ton prof, c'est pas Zimany, par hasard?

n°88104
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 23:04:13  profilanswer
 

gizmo a écrit a écrit :

nope, oublie, j'ai dis une connerie, c'est pas généralisé du tout comme fonction du group by
 
Une solution correct, c'est effectivement celle d'alphaT, a savoir  

Code :
  1. SELECT login FROM connexions
  2. GROUP BY login
  3. HAVING sum(duree)=max((sum)duree)


 
mais il faut que la db que tu utilises accepte les agrégations imbriquées, ce qui n'est pas la cas de mysql ni access.
 
Mais il faut voir ce que ton prof veux. Tiens au fait, ton prof, c'est pas Zimany, par hasard?  




si  :sol:
 
ESTEBAN PAS POWAZAAA :sweat:  
 
et Minou l'assistant...

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°88108
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 23:07:41  profilanswer
 

j'ai exam demain  :sweat:  
 
 
 :hello:

n°88125
gizmo
Posté le 10-01-2002 à 23:33:27  profilanswer
 

info ou polytech?
 
Bah, si c'est ca, te bile pas, je me suis tapé un 15 sans avoir ouvert le cours. Minou a même filé des réponses à des copains pendant l'exam (sans s'en rendre compte, le con :D).
 
Tiens, au fait, votre travail, l'enoncé était correct? linguistiquement parlant? Je me suis enguelé avec lui l'année passée parce que c'est phrases auraient fait se retourner bécherelle dans sa tombe...

n°88127
sisicaivra​i
Life is Beautifullll
Posté le 10-01-2002 à 23:36:29  profilanswer
 

info, mais pas de différence hein ;)
bah je sais bien que c'est un exam bidon, mais ca me fait peur que ce soit minou qui corrige :sweat:  
quand je le vois...
 
et pis certaines requetes sont hardos
 
 
l'énoncé http://polytech.ulb.ac.be/cours/info364/projet.pdf  
ben cai du parlai minou kwa, cai comme kan il explik au TP :sarcastic:  
 
t'es en quelle année?
vais vraiment :sleep: lé tard :o
 
 :hello:
 
PS : tiens au fait l'exo doit te rappeler quelque chose, il est tiré de l'exam de l'an passé ;)

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

n°88130
gizmo
Posté le 10-01-2002 à 23:41:51  profilanswer
 

ben, oui, ca me disait qqch mais comme je garde pas mes anciens exam.
Sinon chuis en 2eme license info. je vais lire ce truc a mon aise.

n°88297
irulan
Posté le 11-01-2002 à 11:05:49  profilanswer
 

AlphaT a écrit a écrit :

 
 
Sur Oracle 7 et + les requêtes d'agrégation imbriquées sont possibles alors que ce n'est pas encore le cas avec PostgreSQL ( :??: )
 
On peut très bien faire SELECT AVG(MAX(SALAIRE)) FROM EMP; et faire aussi SELECT MAX(AVG(SALAIRE)) FROM EMP;  
 
 




 
Ben c'est bizarre, hier en faisant des tests pour ça justement, Oracle m'avait renvoyé un message d'erreur, me disant qu'il y avait un problème d'imbrication. Et là je viens de retester, et ça marche nickel :??:
Bon, désolé pour l'info erronée (Oracle m'a bien eu sur ce coup-là :p )

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  question SQL

 

Sujets relatifs
[SQL] Statement le moins restrictif pour une recherchequestion sur les editeur hexadecimal
(VB) encore moi avec une autre question: comment sauvegarder ..VB + SQL newbie .... tutoriaux + ch'tite question facile
****URGENT***** - Question en SQLSQL-php: question sur requete
Question de syntaxe de SQL avec mysql[SQL] Question pour determiner un prix minimum
(SQL) petite question de base mais...Une petite question sur une requete SQL
Plus de sujets relatifs à : question SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR