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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL - max() et retour de ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL - max() et retour de ligne

n°257545
chaica
Posté le 30-11-2002 à 00:19:04  profilanswer
 

Salut j'ai une colonne num_client où chaque client a un numero.
Je veux trouver le client qui a le plus grand numero et retourner ses autres attributs (par ex nom, prenom)
 
Avec max je trouve le num le plus grand mais impossible de retourner le reste de la ligne!
 
Si qqn peut m'aider
 
CHaiCA

mood
Publicité
Posté le 30-11-2002 à 00:19:04  profilanswer
 

n°257567
leirn
A.D.I.D.A.S.
Posté le 30-11-2002 à 00:39:12  profilanswer
 

elle ressemble a koi ta requete?


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°257574
mrbebert
Posté le 30-11-2002 à 00:41:08  profilanswer
 

Faut ruser.
Au lieu de chercher le max de la colonne, trie la par ordre décroissant et ne garde que la première ligne :sol:


Message édité par mrbebert le 30-11-2002 à 00:41:21
n°257581
leirn
A.D.I.D.A.S.
Posté le 30-11-2002 à 00:46:39  profilanswer
 

mrbebert a écrit a écrit :

Faut ruser.
Au lieu de chercher le max de la colonne, trie la par ordre décroissant et ne garde que la première ligne :sol:




 
:clapclap:


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°257583
chaica
Posté le 30-11-2002 à 00:48:40  profilanswer
 

OUAH merci de répondre! VOila ma requete :
 
select num_users, nom_users, pws_users from users_site where num_users = (SELECT MAX(num_users) from users_site);
 
Pourquoi ca passerait pas?  
Si je pars dans une autre optique et que je trie en decroissant ,cOmment tu fais pour ne garder que la premiere ligne sous mysql?
 
CHaiCA

n°257584
leirn
A.D.I.D.A.S.
Posté le 30-11-2002 à 00:52:52  profilanswer
 

peut etre supporte t il mal les requetes imbrikées, essai de passer par une variable tampon et de les dissociées.
 
concernant la recuperation juste de la premiere: si tu lis avec un while, vire le while et fait kune lecture a la premiere ligne du tableau.
 
cependant je te deconseille cette methode meme si elle parait seduisante de loin: meme si tu lis ke la premiere ligne, tu charges tout la tables en memoire, ce ki n'est pas forcement une bonne idée..
 
ressai ta methode en passant par une variable tampon


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°257585
chaica
Posté le 30-11-2002 à 00:56:42  profilanswer
 

Leirn : ouais je vais essayer ca mais je suis un peu decu si mysql gere si mal les requetes imbriquees, m'enfin c'est gratuit, on peut pas tout avoir.
 
Toutefois pour recuperer la premiere ligne tu peux normalement faire ca dans la requete meme par exemple sous sqlserver, c'est top 1 apres avoir trier en decroissant.
 
Bon pour l'instant je vais essayer le tampon on verra bien
 
Mais si quelqu'un a une autre soluce je reste preneur!
 
CHaiCA

n°257589
mrbebert
Posté le 30-11-2002 à 01:05:29  profilanswer
 

chaica a écrit a écrit :

OUAH merci de répondre! VOila ma requete :
 
select num_users, nom_users, pws_users from users_site where num_users = (SELECT MAX(num_users) from users_site);
 
Pourquoi ca passerait pas?  
Si je pars dans une autre optique et que je trie en decroissant ,cOmment tu fais pour ne garder que la premiere ligne sous mysql?
 
CHaiCA  



Je ne crois pas que mysql gère les requêtes imbriquées [:proy]  
 
Pour garder la dernière ligne, tu rajoutes "LIMIT 0, 1" à ta requête (0 car tu prends la première ligne (numérotées à partir de 0), et 1 pour le nombre de lignes que tu veux récupérer).

n°257592
leirn
A.D.I.D.A.S.
Posté le 30-11-2002 à 01:12:43  profilanswer
 

chaica a écrit a écrit :

Leirn : ouais je vais essayer ca mais je suis un peu decu si mysql gere si mal les requetes imbriquees, m'enfin c'est gratuit, on peut pas tout avoir.
 
Toutefois pour recuperer la premiere ligne tu peux normalement faire ca dans la requete meme par exemple sous sqlserver, c'est top 1 apres avoir trier en decroissant.
 
Bon pour l'instant je vais essayer le tampon on verra bien
 
Mais si quelqu'un a une autre soluce je reste preneur!
 
CHaiCA




 
effectivement si tu peux limiter le nombre de lignes renvoeyer a 1 (ce ki est posisble maintenant ke tu le dis, j'y avais pas penser tout a l'heure, le tri c ce kil y a de plus mieux
 
 
en revanche, c absolument normal kil gere pas les requetes imbrikés... contrairmeent a du c ou tu peut avoir kke cose de la forme
 
for (i=0; i<foncitonkirecuepereunchiffre(); i++)
 
le sql foncitnone sous forme de requete et non pas d'appel de fonction


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°257593
chaica
Posté le 30-11-2002 à 01:14:04  profilanswer
 

Leirn : heu... oracle les gere parfaitement :D :D (tested and approved everyday)
 
CHaiCA

mood
Publicité
Posté le 30-11-2002 à 01:14:04  profilanswer
 

n°257595
leirn
A.D.I.D.A.S.
Posté le 30-11-2002 à 01:16:22  profilanswer
 

chaica a écrit a écrit :

Leirn : heu... oracle les gere parfaitement :D :D (tested and approved everyday)
 
CHaiCA




 
je ne sais pas comment fonctionne oracle :/ jamais essayé


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°263656
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:02:15  profilanswer
 

mysql gere les subqueries uniquement a partir de la version 4.1 qui est en cours de developpement :)

n°263658
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:06:02  profilanswer
 

Ex :
 
 

mysql> SELECT titre,numeropost,date,auteur FROM forumconthardwarefr7 WHERE numeropost=(SELECT max(numeropost) FROM forumconthardwarefr7);
+---------------------------------------------+------------+---------------------+--------+
| titre                                       | numeropost | date                | auteur |
+---------------------------------------------+------------+---------------------+--------+
| C koi le matos de matthew bellamy (muse)??? |     185883 | 2002-12-06 19:05:07 | ppon   |
+---------------------------------------------+------------+---------------------+--------+
1 row in set (0.00 sec)


:D


Message édité par joce le 06-12-2002 à 19:06:47
n°263660
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-12-2002 à 19:08:05  profilanswer
 

joce a écrit :

mysql gere les subqueries uniquement a partir de la version 4.1 qui est en cours de developpement :)


 
les subqueries c les requetes imbriqué?

n°263661
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:08:32  profilanswer
 

forummp3 a écrit :


 
les subqueries c les requetes imbriqué?

oui

n°263663
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-12-2002 à 19:09:20  profilanswer
 
n°263664
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:09:31  profilanswer
 

Et t'as aussi les derived table :
 
SELECT * FROM (SELECT truc FROM pouet WHERE schmeu) WHERE gloups=hummf;

n°263665
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-12-2002 à 19:10:22  profilanswer
 

et elle sort bientot la v 4.1 ? et pourkoi ils ont pas fait ca avant?

n°263668
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:13:15  profilanswer
 

forummp3 a écrit :

et elle sort bientot la v 4.1 ? et pourkoi ils ont pas fait ca avant?


parce que c'est pas trivial a faire :D

n°263669
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-12-2002 à 19:14:22  profilanswer
 

joce a écrit :


parce que c'est pas trivial a faire :D


 
ha ok  [:sstarshoot]  
 
sinon on fait comment pour remplacer cela car ca a l'air tres utile :)

n°263676
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 06-12-2002 à 19:25:26  profilanswer
 

jointure, requete fait en deux fois, etc

n°263677
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-12-2002 à 19:26:39  profilanswer
 

joce a écrit :

jointure, requete fait en deux fois, etc


 
ok  :jap:

n°409821
Core 666
Posté le 27-05-2003 à 23:09:36  profilanswer
 

joce a écrit :

Ex :

mysql> SELECT titre,numeropost,date,auteur FROM forumconthardwarefr7 WHERE numeropost=(SELECT max(numeropost) FROM forumconthardwarefr7);
+---------------------------------------------+------------+---------------------+--------+
| titre                                       | numeropost | date                | auteur |
+---------------------------------------------+------------+---------------------+--------+
| C koi le matos de matthew bellamy (muse)??? |     185883 | 2002-12-06 19:05:07 | ppon   |
+---------------------------------------------+------------+---------------------+--------+
1 row in set (0.00 sec)




Elle n'est pas conçue bizarrement ta DB ? :??:
 
Le stockage du pseudo de l'auteur en lieu et place de son ID n'est pas commum. Ca fait perdre de la place et c'est peut être pas le mieux niveau relationnel si ? [:core 666] Tu es vraiment gagnant avec la jointure que ca te fait économiser ?
 
Autre point curieux : on dirait que tu créés une table par forum (table forumconthardwarefr7 pour le forum Blabla - Divers qui porte le n°7). Tu as constaté un gain de performance significatif en procédant ainsi plutôt qu'en créant une table commune avec un champ indexé forum_id ? Ca semble assez déroutant comme organisation :)

n°409824
MagicBuzz
Posté le 27-05-2003 à 23:21:35  profilanswer
 


il supporte les jointures entre la requête principale et la requête imbriquée ?
 
Par exemple, pour récupérer le dernier post de chaque membre :

Code :
  1. select t1.titre, user.login
  2. from topic t1, user
  3. where user.id = topic.user_id
  4. and t1.date = (select max(t2.date) from topic t2 where t2.user_id = t1.user_id)


Si oui, alors mySQL va peut-être enfin devenir intéressant...

n°409827
MagicBuzz
Posté le 27-05-2003 à 23:23:23  profilanswer
 

Core 666 a écrit :


Elle n'est pas conçue bizarrement ta DB ? :??:
 
Le stockage du pseudo de l'auteur en lieu et place de son ID n'est pas commum.


Il utilise le login comme clé.
C'est pas plus lent, ça bouffe pas beaucoup plus de place, et ça évite de faire des jointures sans arrêt pour retrouver le pseudo de l'auteur.

n°409834
MagicBuzz
Posté le 27-05-2003 à 23:30:44  profilanswer
 

Et, dernière question, supporte-t-il les requêtes dans le select ?
 

Code :
  1. select (select count(*) from topics) as nbTopics, (select count(*) from users) as nbUsers from dual

n°410798
MagicBuzz
Posté le 28-05-2003 à 21:42:15  profilanswer
 

C'est qu'il répondrait pas ce Joce :o ;)

n°410897
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 29-05-2003 à 01:59:11  profilanswer
 

réponse : oui
D'ailleurs t'es pas obligé de rajouter FROM DUAL


Message édité par joce le 29-05-2003 à 02:00:53
mood
Publicité
Posté le   profilanswer
 


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

  SQL - max() et retour de ligne

 

Sujets relatifs
SQL + PHP ???[ORACLE-SQL] Optimisation d'une vue
Requête SQL AccessHypersonique SQL
[SQL SERVER] sécurisation des utilisateursGérer les retours à la ligne avec des include ou readfile....
PL/SQL Recuperer le "champ" jour d'une dateRecherche Doc sur MDX avec SQL Server
[SQL SERVER] sauvegarde[SQL SERVER]pb de caractères
Plus de sujets relatifs à : SQL - max() et retour de ligne


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