Page 1 sur 1

Requête, problème avec LIMIT, ou pas ?

Posté : 13 mai 2008, 15:28
par SpintroniK
Salut,

J'essaye de faire une requête qui me donnerai, par exemple sur la sélection des messages d'un forum, la valeur maximal du champ id sur cette sélection, sachant que cette requête se termine par : LIMIT $debut, $n.
En gros, j'avais pensé faire ça (car je suis très con) : $req = mysql_query("SELECT MAX(id) FROM table WHERE ... LIMIT $debut, $n");
Mais bien sûr le problème c'est que le LIMIT s'applique au MAX(id) (donc dès que $debut>1 pu de résultat), j'ai donc essayé plein de trucs horribles avec des GROUP BY... mais je n'ai jamais obtenu le bon résultat.
Est-ce quelqu'un aurait une idée ou pourrait me mettre sur la voie ?
Merci.

Pourquoi le forum me dit ça :
Vous n'avez pas indiqué le schéma de vos tables sous la forme d'une instruction CREATE TABLE

Exporter sous phpMyAdmin
Manuel MySQL (mysql.com)

Posté : 13 mai 2008, 15:44
par caroube
L'instruction Limit permet de dire "donne moi x enregistrements à partir du yième".
Quand tu fais une recherche du maximum, il est par définition unique : Il y a toujours qu'une seule réponse.
Donc

Code : Tout sélectionner

SELECT MAX(id) FROM table WHERE ...
Maintenant, si ce que tu veux faire, c'est sur une liste limitée, avoir le max de id, il faut que tu fasses ça

Code : Tout sélectionner

SELECT id FROM table WHERE ... ORDER BY id desc LIMIT x,y
Il ne faut surtout pas cherche le max, car il est unique. Il faut afficher tous les codes et les trier par ordre décroissant. Et ton id maximum, ce sera celui du premier enregistrement (ou plutôt du zero-ième)

Posté : 14 mai 2008, 14:45
par SpintroniK
Je pensais que c'était possible de le faire autrement...
Tant pis, j'utiliserai cette méthode.

Merci

Posté : 14 mai 2008, 18:01
par ouckileou
Modération :
SpintroniK, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

Posté : 15 mai 2008, 09:51
par SpintroniK
C'est fait, désolé, j'avais oublié :?