[SQL]Erreur requête imbriquée

Erreur requête imbriquée [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 27-07-2006 à 22:53:07    

Bonjour, j'ai un problème de compatibilité et je trouve pas de solution...
 
Mon hébergeur est en MySQL 4.0.15-max-nt et chez moi je suis en MySQL 4.1.9-max et voila ce que j'avais fait :
 

Code :
  1. SELECT *
  2. FROM fusion_lan
  3. WHERE lan_temps <0
  4. AND lan_avenir =1
  5. AND lan_temps
  6. IN (
  7. SELECT MAX( lan_temps )
  8. FROM fusion_lan
  9. WHERE lan_temps <0
  10. AND lan_avenir =1
  11. )


 
Ce qui marche parafaitement mais une fois executer sur le serveur de mn hebergeur ça me retourne :
 

Citation :

Erreur
 
requête SQL :
 
SELECT *
FROM fusion_lan
WHERE lan_temps < 0 AND lan_avenir = 1 AND lan_temps
IN (
 
SELECT MAX( lan_temps )
FROM fusion_lan
WHERE lan_temps < 0 AND lan_avenir = 1
)
 
MySQL a répondu:
 
Erreur de syntaxe près de 'SELECT MAX( lan_temps )  FROM fusion_lan WHERE lan_temps < 0 AND' à la ligne 1


 
 
On m'a dit que c'était a cause du fait que le problème vient de la requête imbriqué qui n'est géré car partir de la version 4.1
Et qu'il n'y a qu'une solution, sauvegarder le résultat intermèdiaire.
Et on ma donné ce lien : http://mysql.developpez.com/faq/?p [...] s_requetes
 
Qui explique comment palier au problème de requête imbriqués pour les version inférieur à 4.1 .
 
Donc j'ai essayer de recoder mon code pour obtenir :

Code :
  1. CREATE TEMPORARY TABLE table_temp (
  2.  id int,
  3.  Maximum int
  4. );
  5. LOCK TABLES fusion_lan READ;
  6. INSERT INTO table_temp select lan_id, max(lan_temps) FROM fusion_lan WHERE lan_temps < 0 AND lan_avenir=1;
  7. SELECT fusion_lan.* FROM fusion_lan WHERE fusion_lan.lan_id = table_temp.id and fusion_lan.lan_temps = table_temp.Maximum;
  8. UNLOCK fusion_lan;
  9. DROP TABLE table_temp;


 
Mais maintenant j'ai comme message d'erreur chez mon hebergeur :

Citation :

Erreur
 
requête SQL :  
 
CREATE TEMPORARY TABLE table_temp(
id int,
Maximum int
)
 
MySQL a répondu:
 
Accès refusé pour l'utilisateur: 'user@localhost'. Base 'base'


 
Donc si quelqu'un voulais bien m'aider je lui serais ès reconnaissant.
 
Merci d'avance.

Reply

Marsh Posté le 27-07-2006 à 22:53:07   

Reply

Marsh Posté le 27-07-2006 à 23:07:19    

dans la doc de mysql :

From MySQL 4.0.2 on, to create temporary tables, you must have the CREATE TEMPORARY TABLES privilege.


il faut que tu modifies les droits de création de table temporaires, mais avant de te lancer dedans vérifie que tu possèdes ce droit chez ton hébergeur

Reply

Sujets relatifs:

Leave a Replay

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