problème d'écriture d'une requête

Eléphanteau du PHP | 40 Messages

16 juin 2008, 12:31

Bonjour,

je voudrais sélectionner dans une table 3 enregistrements uniquement, situés en dessous d'un enregistrement particulier.

par ex, dans la table :

Create Table: CREATE TABLE t (
id int(3) default NULL auto_increment,
champ1 char(60) default NULL,
champ2 char(60) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM

id | champ1 | champ2
1 | aaaa | bbbb
2 | cccc | dddd
3 | eeee | fffff
4 | eeee | fffff
6 | eeee | fffff
9 | eeee | fffff
10 | eeee | fffff
12 | eeee | fffff
15 | eeee | fffff

j'aimerais sélectionner les enregistrements 4, 6, 9 en ayant pour seul repère l'enregistrement 10. Je ne sais pas si c'est très clair mon truc... :?

ça pourrait être ça, mais il manque qquechose :
SELECT * FROM table WHERE ID<10 LIMIT 3

si quelqu'un a une piste...

merci

Eléphant du PHP | 174 Messages

16 juin 2008, 12:58

Bonjour.
ça pourrait être ça, mais il manque qquechose :
SELECT * FROM table WHERE ID<10 LIMIT 3
Qu'est ce qui ne va pas concrètement ?
Parce que logiquement ça te retourne bien 4, 6 et 9 là...

[EDIT] oui en fait ça doit te rendre les 3 premiers (1,2 et 3),
il faut que tu places un tri de manière décroissante :

Code : Tout sélectionner

SELECT * FROM table WHERE ID<10 ORDER BY ID DESC LIMIT 3
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Eléphanteau du PHP | 40 Messages

16 juin 2008, 13:23

merci pour ta réponse

mais j'ai besoin de conserver un ordre croissant, d'où la difficulté :wink:

je ne connais pas très bien SQL, je me demandais s'il y avait une syntaxe pour ce genre de cas.

Eléphant du PHP | 174 Messages

16 juin 2008, 13:30

Tu as une seconde méthode :

LIMIT peut prendre 2 paramètre : le nombre d'enregistrements mais aussi la position du premier enregistrement.

ex : LIMIT 1,3 indique qu'il part de la position +1 sur 3 enregistrements.

Tu peux faire un mysql_num_rows - 3 pour la position et appliquer cette méthode...
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)