IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Sous requête en Update bugguant sur certaines versions de MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club

    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 51
    Points
    51
    Par défaut Sous requête en Update bugguant sur certaines versions de MySQL
    Bonjour,

    J'ai un type de requete basique qui ne passe pas toujours sur MySQL en fonction de sa version. Ma demande est simple, comme rediger cette requete pour qu'elle passe PARTOUT :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE phpbb_areabb_categories 
    SET arcade_nbelmt = ( SELECT COUNT(game_id)  FROM phpbb_areabb_games ) 
    WHERE arcade_catid = 1

    quand ca plante j'obtiens ce message:
    SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT(game_id) FROM phpbb_areabb_games

    UPDATE phpbb_areabb_categories SET arcade_nbelmt = ( SELECT COUNT(game_id) FROM phpbb_areabb_games ) WHERE arcade_catid = 1
    • MySQL 4.1.9 : ca marche
    • MySQL 4.0.24 : ca marche pas


    merci de votre aide.

    EDIT : merci d'indenter tes requêtes (comme je viens de le faire) ; tout sur une seule ligne c'est illisible.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Tu utilises une sous-requête, ce qui n'est effectivement possible qu'à partir de la version 4.1... Tu as deux contournements possibles, par une variable utilisateur ou par une table temporaire ; dans les deux cas, il te faut plusieurs requêtes :

    par une variable utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -- (pas complètement sûr que ça marche en 4.0, à tester)
    SELECT COUNT(game_id)  INTO @nb
    FROM phpbb_areabb_games ;
     
    UPDATE phpbb_areabb_categories 
    SET arcade_nbelmt = @nb 
    WHERE arcade_catid = 1 ;
    avec une table temporaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TEMPORARY TABLE tempo
    SELECT COUNT(game_id)  AS Nb
    FROM phpbb_areabb_games ;
     
    UPDATE phpbb_areabb_categories, tempo
    SET phpbb_areabb_categories.arcade_nbelmt = tempo.Nb
    WHERE arcade_catid = 1 ;

  3. #3
    Membre du Club

    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 51
    Points
    51
    Par défaut
    Merci pour cette réponse très précise !

    effectivement MySQL est encore plus limité que ce que je croyais.. dommage !

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par saint-pere
    effectivement MySQL est encore plus limité que ce que je croyais.. dommage !
    MySQL était très limité jusqu'à la 4.0. Aujourd'hui, il propose tous les outils avancés : procs stocks, triggers, collations, indexation Full-Text, transactions, expressions régulières, etc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Requête Update sur le résultat d'une sous-requête
    Par curt dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/07/2013, 21h40
  2. update avec sous requête sur la même table
    Par beyo dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2012, 14h21
  3. [Utilisation] Update d'une certaine version d'un fichier
    Par nahouto dans le forum CVS
    Réponses: 2
    Dernier message: 17/02/2009, 11h48
  4. select in select indisponible sur certaines versions ?
    Par banzzai dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2006, 18h46
  5. problèmes requètes sur vieilles versions de SQL TALK (1993)
    Par totogenie dans le forum Langage SQL
    Réponses: 11
    Dernier message: 24/01/2006, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo