SELECT, DELETE et LIMIT

Eléphanteau du PHP | 11 Messages

09 juin 2011, 11:41

Bonjour,
pour sélectionner un enregistrement précis dans une table (par exemple le cinquième) j'utilise:
"SELECT * FROM $categorie LIMIT 5,1"
Existe-t-il une manière identique pour supprimer un enregistrement? Genre
"DELETE FROM $categorie LIMIT 5,1"?
Merci de votre réponse!
Laurent

ViPHP
ViPHP | 2577 Messages

09 juin 2011, 12:08

Bonjour,

En général on utilise la valeur d'une colonne pour faire la sélection.

select * from MaTable where id = 1234
delete from Matable where id = 2345

Il est fréquent d'avoir dans une table un champ de type entier défini en auto-incrément pour faire ca.

Eléphanteau du PHP | 11 Messages

09 juin 2011, 12:42

Oui je sais... mais dans mon script ça m'arrangerait de travailler sur l'ordre de l'enregistrement car les champs sont volatils tels que je les emplois. Je peux donc pas trop me baser sur le contenu d'un champ mais sur son "ordre" dans la table. C'est pour ça que je l'appelle avec "LIMIT 5,1".

ViPHP
xTG
ViPHP | 7331 Messages

09 juin 2011, 13:06

Il faut nécessairement avoir les ids.
Donc voici comment procéder :
1) Une requête SELECT récupérant tes ids avec un LIMIT
2) La requête DELETE avec un WHERE id IN (ids_récupérés_avant)

ViPHP
ViPHP | 2577 Messages

09 juin 2011, 14:01

Bonjour,

Dans un select sans "order by", il n'y a aucune garantie sur l'ordre des lignes de la table. Dans les cas d'un "order by" il n'y a pas non plus de garantie d'ordre pour 2 lignes ayant les mêmes valeurs des critères de tri.

Eléphanteau du PHP | 11 Messages

09 juin 2011, 14:22

Merci tous les deux. je vais faire comme ça: récupérations des ids (après SELECT) puis DELETE avec ces ids.
Bonne journée!
Laurent.