[Mysql] le dernier de la liste

le dernier de la liste [Mysql] - SQL/NoSQL - Programmation

Marsh Posté le 19-08-2004 à 16:38:58    

Bonjour,
 
Soit une table contenant id(num, auto-incrémenté) et chemin (texte)
Je voudrai afficher la valeur de chemin dont l'id est le plus grand !
 
Soit :
select id,chemin from matable where id=max(id);
select id,chemin from matable where id=(select max(id) from matable);
select id, chemin from matable a where id in (select max(id) from a);
 
<--- Rien ne marche ! --->
 
La doc est assez diffuse sur le sujet ; je suis en php4, mysql 4.0.13

Reply

Marsh Posté le 19-08-2004 à 16:38:58   

Reply

Marsh Posté le 19-08-2004 à 16:42:20    

SELECT max(id), chemin FROM matable;  ?

Reply

Marsh Posté le 19-08-2004 à 17:23:09    

LOL...J'ai essayé ça aussi ; rien à faire non plus !
En fait, j'ai fini par faire un order by, avec un fetch_row...mais ça ne satisfait pas ma curiosité !

Reply

Marsh Posté le 19-08-2004 à 18:59:12    

Essaye :
 

Code :
  1. SELECT chemin FROM matable
  2. ORDER BY id desc
  3. LIMIT 0,1;

Reply

Marsh Posté le 19-08-2004 à 21:24:12    

select max(id), tous les champs (y compris id)
from la table
group by tous les champs sauf max(id)
having id = max(id)
 
Ca devrait marcher aussi

Reply

Marsh Posté le 20-08-2004 à 10:28:25    

Beegee a écrit :


Code :
  1. SELECT chemin FROM matable
  2. ORDER BY id desc
  3. LIMIT 0,1;



 
ça me parait la meilleur solution, par contre je ne suis pas sur que tu puisse faire ton "ORDER BY id" si celui-ci ne fait pas parti des champs sélectionné (ici tu ne sélectionne que "chemin" )...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 20-08-2004 à 10:58:46    

avec Oracle on peut, je pense que c'est pareil pour mySql.
 
Le order by, c'est une indication pour l'ordre de récupération des lignes à traiter, peu importe quels champs sont ensuite retournés.

Reply

Marsh Posté le 20-08-2004 à 11:01:31    

oui on peut trier sur un champs qu'on ne sélectionne pas

Reply

Marsh Posté le 20-08-2004 à 13:45:23    

Xav_ a écrit :

ça me parait la meilleur solution, par contre je ne suis pas sur que tu puisse faire ton "ORDER BY id" si celui-ci ne fait pas parti des champs sélectionné (ici tu ne sélectionne que "chemin" )...


Sisi, normalement le order by est indépendant du select.
Par contre, dans le cadre d'une fonction de regroupement, il faut faire attention à ce que les champs du order by soient aussi présents dans la clause du group by.

Reply

Marsh Posté le 20-08-2004 à 14:12:18    

merci pour les compléments de réponse, je pensai que le "ORDER BY" s'effectuai après la sélection --> pb pour trier à partir d'un champs qui n'est pas sélectionné
 
C'est cool, ça va me permettre d'alléger certaine de mes requêtes :D


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 20-08-2004 à 14:12:18   

Reply

Marsh Posté le 20-08-2004 à 14:23:25    

Xav_ a écrit :

merci pour les compléments de réponse, je pensai que le "ORDER BY" s'effectuai après la sélection --> pb pour trier à partir d'un champs qui n'est pas sélectionné


nan, ça c'est le having :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed