OVH Community, votre nouvel espace communautaire.

Variables de session ne fonctionnent pas sur serveur mutualisé ?


Sebbecket
04/08/2015, 09h35
Citation Envoyé par Abazada
Bonjour,
Je dirais à 99% un problème de typage de ces variables locales.
MySQL n'est vraiment pas doué pour cela et sa doc conseille de typer *explicitement* ces variables.

Essaye de rajouter devant ton SELECT quelque chose du type :
Code:
SET @country_rank = 0;
SET @current_country = '';
C'était bien ça !
Merci

Abazada
04/08/2015, 03h08
Bonjour,
Je dirais à 99% un problème de typage de ces variables locales.
MySQL n'est vraiment pas doué pour cela et sa doc conseille de typer *explicitement* ces variables.

Essaye de rajouter devant ton SELECT quelque chose du type :
Code:
SET @country_rank = 0;
SET @current_country = '';

Sebbecket
03/08/2015, 23h49
Bonjour,
Sur mon hébergement mutualisé, les variables de sessions mysql semblent toujours renvoyer un résultat null. Est-ce possible que cela vienne d'une configuration liée à la mutulisation ?

L'exemple donné ici par exemple : http://www.sqlines.com/mysql/how-to/...p_n_each_group
ne fonctionne pas

Code:
 CREATE TABLE cities
   (
      city VARCHAR(80),
      country VARCHAR(80),
      population INT
   );
 
   INSERT INTO cities VALUES ('New York', 'United States', 8175133); 
   INSERT INTO cities VALUES ('Los Angeles', 'United States', 3792621); 
   INSERT INTO cities VALUES ('Chicago', 'United States', 2695598); 
 
   INSERT INTO cities VALUES ('Paris', 'France', 2181000);
   INSERT INTO cities VALUES ('Marseille', 'France', 808000);
   INSERT INTO cities VALUES ('Lyon', 'France', 422000);
 
   INSERT INTO cities VALUES ('London', 'United Kingdom',	7825300);
   INSERT INTO cities VALUES ('Birmingham', 'United Kingdom', 1016800);
   INSERT INTO cities VALUES ('Leeds', 'United Kingdom', 770800);
Code:
   SELECT city, country, population
   FROM
     (SELECT city, country, population, 
                  @country_rank := IF(@current_country = country, @country_rank + 1, 1) AS country_rank,
                  @current_country := country 
       FROM cities
       ORDER BY country, population DESC
     ) ranked
   WHERE country_rank <= 2;
renvoie toutes les villes et non uniquement les deux premières car country_rank est toujours à 1 :
Code:
SELECT city, country, population, 
       @country_rank := IF(@current_country = country, @country_rank + 1, 1) AS country_rank,
       @current_country := country 
  FROM cities
  ORDER BY country, population DESC
Qu'ai-je manqué ?
Merci de votre aide.