Requete DELETE qui ne fonctionne pas


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Requete DELETE qui ne fonctionne pas

Message le Sam Déc 12, 2009 16:15

Bonjour,

J'ai une requete Delete, qui ne fonctionne pas. Ce que je trouve incompréhensible, c'est qu'elle me parrait totalement correct.

Dans phpmyadmin j'ai cette erreur : #1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Voici le requête : DELETE FROM rpg_news WHERE id NOT IN (SELECT id FROM rpg_news WHERE type='2' ORDER BY id DESC LIMIT 0,6)

petit-ourson
WRInaute impliqué
WRInaute impliqué
 
Messages: 855
Inscription: 31 Mai 2004

Re: Requete DELETE qui ne fonctionne pas

Message le Sam Déc 12, 2009 17:26

Le message semble plutôt clair...

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

> Cette version de MySQL ne supporte pas encore les LIMIT & les sous requêtes (avec) IN/ALL/ANY/SOME


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Re: Requete DELETE qui ne fonctionne pas

Message le Sam Déc 12, 2009 17:58

C'est la version la plus récente de phpmyadmin. C'est quand mémé sacrement étonnant qu'il supporte pas le LIMIT

petit-ourson
WRInaute impliqué
WRInaute impliqué
 
Messages: 855
Inscription: 31 Mai 2004

Re: Requete DELETE qui ne fonctionne pas

Message le Sam Déc 12, 2009 18:08

C'est MySQL qui "pose" problème, pas phpMyAdmin.

De toute façon aucune version de MySQL stable (et peut être les autres en cours de développement) ne pourra exécuter cette requête. La sous-requête que tu utilises ne doit pas faire référence à la table sur laquelle tu veux supprimer des lignes.


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Re: Requete DELETE qui ne fonctionne pas

Message le Sam Déc 12, 2009 20:06

Etant donné que la requête ne peut pas fonctionner, je vous expose ce que je voudrais faire :

Je voudrais garder les 6 ID les plus récent dans une table, et effacer tous les autres.

Merci à ceux qui pourront m'aider.

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Requete DELETE qui ne fonctionne pas

Message le Dim Déc 13, 2009 19:04

Bonsoir,

pourquoi ne pas faire 2 requêtes en php ?

Une qui récupère les 6 id et une qui efface les autres.

petit-ourson
WRInaute impliqué
WRInaute impliqué
 
Messages: 855
Inscription: 31 Mai 2004

Re: Requete DELETE qui ne fonctionne pas

Message le Dim Déc 13, 2009 19:23

D'autant que les IN (SELECT .... FROM .... WHERE ....) sont énormément gourmands par rapport à un IN (valeur1, valeur2, valeur3, valeur4, valeur5)
Dernière édition par petit-ourson le Dim Déc 13, 2009 19:37, édité 1 fois.


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requete DELETE qui ne fonctionne pas

Message le Dim Déc 13, 2009 19:30

le limit dans les sous-requete n'est pas supporté à ce jour. (d'après mes dernières recherches) ... à mon grand malheur aussi !


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Re: Requete DELETE qui ne fonctionne pas

Message le Dim Déc 13, 2009 21:33

J'ai fais 2 requetes finalement. Une qui compte le nombre d'enregistrement. Et si il y a en a plus de 5, je supprime la plus ancienne. Je sais pas si il y avait possibilité de faire autrement.

Code: Tout sélectionner
         $nb_news = mysql_query(sprintf("SELECT COUNT(id) AS nb_news FROM %s_news WHERE type='%d'",
         $mysql->pref,
         mysql_real_escape_string($_POST['type'])));
         
         $nb_news = mysql_fetch_assoc($nb_news);
         
         if($nb_news['nb_news'] > 5){
            
            $delete = mysql_query(sprintf("DELETE FROM %s_news WHERE type='%d' ORDER by date ASC LIMIT 1",
            $mysql->pref,
            mysql_real_escape_string($_POST['type'])));
         }


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité