Retourner le dernier element d'une table - SQL/NoSQL - Programmation
Marsh Posté le 25-07-2004 à 17:18:30
SELECT login FROM table
WHERE groupe = variable
ORDER BY id DESC
LIMIT 1
Marsh Posté le 25-07-2004 à 17:28:45
OOps je me suis effectivement mal exprimé ...mea culpa... Il faudrais que je puisse par exemple savoir quel est le dernier login pour groupe 1 et quel est le dernier login pour groupe 2 ... En gros afficher la liste du tout les dernier login pour chaque group ...
Marsh Posté le 25-07-2004 à 18:44:55
select max(id), login from maTable where and group="group1" ??
pas sur, et le flemme de verifier, me sert jamais des max ![[:itm] [:itm]](https://forum-images.hardware.fr/images/perso/itm.gif)
Marsh Posté le 25-07-2004 à 18:45:35
Non comme ca tu obtiens le max ID et le 1er login de ta table ki satisfasse a la condition du groupe ... Parcontre j'imagine que c impossible de mettre le max() dans les where clauses?
Marsh Posté le 25-07-2004 à 19:12:38
SELECT login
FROM matable
GROUP BY 'group'
HAVING MAX( id )
Je n'ai reçu aucune erreur mais aucune donnée non plus ...
Marsh Posté le 25-07-2004 à 21:14:47
Sous Oracle:
select id,login
from matable
where id in (select max(id) from matable group by group)
Marsh Posté le 25-07-2004 à 21:55:42
Je suis sous Mysql, mais en me disant ca tu m'a rappellé que j'avais vu une structure semblable (2 requettes embriquées) sur le site de mysql ... je v aller voir si je retrouve ... Merci bc en tt cas
Marsh Posté le 25-07-2004 à 23:43:22
soit tu es avec MySQL 4.0+ et alors la requète de thecoin devrait fonctionner, soit tu peux essayer qqch comme ça
SELECT DISTINCT ON ("group" ) login
FROM table
ORDER BY "group",id DESC
Marsh Posté le 25-07-2004 à 23:44:30
Ok merci a vous 2, je vais voir tout ca , je vous redis demain
merci en tout cas
Marsh Posté le 26-07-2004 à 00:31:25
Juste ... j'ai trouver ca sur www.mysql.com a propos des subqueries de thecoin : Starting with MySQL 4.1 . Hors le 4.1 est encore en phase beta ==> pas chez mon hebergeur ... Je v essayer de voir comme tu dis toi gizmo
Marsh Posté le 26-07-2004 à 01:26:17
| esox_ch a écrit : SELECT login |
c'est quoi 'group' ?
je crois plutot que c'est group by login,group.
Marsh Posté le 26-07-2004 à 09:54:02
| Fabien a écrit : c'est quoi 'group' ? |
Tu ne pourras pas t'en sortir avec un HAVING. La confusion est souvent faire, mais le HAVING ne sert malheureusement pas à ça.
Tu utiliseras HAVING plutôt pour ce genre de choses :
Retrouver le nombre d'éléments de "n" qui sont présents plus de x fois dans la table :
|
Marsh Posté le 26-07-2004 à 19:28:27
Bon le probleme reste appremment entier ... Mon hebergeur tourne encore sur la version 4.0+ de mysql (car la 4.1 est encore beta) et donc les subquery sont exclues
, et le DISTINCT ON n'est pas reconnu par mysql .. Il connais seulement le DISTINCT .. Qqn a une idée de comment on peut arrenger ca?
Marsh Posté le 26-07-2004 à 20:26:23
| esox_ch a écrit : Bon le probleme reste appremment entier ... Mon hebergeur tourne encore sur la version 4.0+ de mysql (car la 4.1 est encore beta) et donc les subquery sont exclues |
ça peut t'aider...
http://www.nexen.net/docs/mysql/an [...] ueries.php
Marsh Posté le 26-07-2004 à 20:27:19
Le probleme de 2 rekettes de suite est que, l'exemple que j'ai demandé est enfait une "simplification" du probleme qui m'occupe ... Faire + qu'une requette signifierais en faire beaucoup plus que 2 ... J'ai lu dans mysql qu'il y a presque toujour un moyen de convertir une requette avec subquery en 1 requette avec un JOIN, mais j'y arrive pas trop en ce moment
.. Bon je v pas me laisser me decourrager quand meme, je v perseverer... je vous dirais si j'arive a qqch
En tt cas merci a tous
Marsh Posté le 26-07-2004 à 20:28:10
| JagStang a écrit : ça peut t'aider... |
Merci Jagstang , dans ma reponse précédente je parle justement de cet article (enfin je l'avais trouvé en anglais sur mysql.com)
Marsh Posté le 26-07-2004 à 20:29:30
testé. ça fontctionne à merveille.
Marsh Posté le 26-07-2004 à 20:46:58
Je suis entrain de me relire les pages sur JOIN, c'est vrai que j'ai jamais utilisé cette bete la ... Apperemment mon livre n'est pas aussi complet que je le croyais ![]()
Marsh Posté le 26-07-2004 à 23:45:48
il existe des variantes de left join / inner join avec *= et =* plus agréables à utiliser
Marsh Posté le 26-07-2004 à 23:47:51
Merci ... je vais voir tout ca sur mysql.com et si jamais c'est pas assez je chercherai des tuto ... En tout cas merci beaucoup
Marsh Posté le 26-07-2004 à 23:56:04
je crois pas que MySQL supporte cela. mais Transact SQL
Marsh Posté le 27-07-2004 à 00:15:36
oui
Marsh Posté le 27-07-2004 à 02:09:51
ceci fonctionne, en tout cas en Access:
|
Marsh Posté le 25-07-2004 à 17:11:08
Bonjour ,
j'ai une table contenant 3 champs :
ID (int autoincremanté)
Login (varchar)
Groupe (int)
Je voudrais pouvoir sortir quel est le dernier login de la liste ayant comme groupe une valeur précise, et ceci en 1 seule requette mysql et sans utiliser "de truc" php pour prendre seulement la derniere valeur.
J'espere de m'etre bien exprimé, merci d'avance
Esox