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
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 , 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? |
ç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