Problème SQL

Bonjour,
j'ai un petit problème avec une commande SQL qui parait pourtant simple:

SELECT *
FROM mdl_stat_connex_pltfrm
WHERE id = (
SELECT MAX( id )
FROM mdl_stat_connex_pltfrm )

Mais pourtant lorsque je teste cette commande sous phpMyAdmin, il me renvoie une erreur:
#1064 - You have an error in your SQL syntax near 'SELECT MAX( id )
FROM mdl_stat_connex_pltfrm ) ' at line 4

Je ne comprends pas.
Merci à celui qui pourra m'aider.

9 réponses

  1. Modérateur
    Je ne connais pas bien mySQL, mais peut-être que tu as une version trop ancienne de mySQL ?

    http://www.mysql.com/doc/en/Subqueries.html
    "Starting with 81 version 4.1, MySQL supports all subquery forms and operations which the SQL standard requires"
    0
    1. En effet les imbrications de ce type ne fonctionnent qu'à partir de la version 4.1 et j'ai la 3.23 .
      Malheureusement je ne peux pas la mettre à jour car je suis sur le serveur d'une université.

      Si quelqu'un sait comment je pourrais faire un équivalent de cette commande sans faire d'imbrication...

      Sinon il me reste encore la pendaison...
      0
      1. Contributeur
        Tiens ca marche avec les nouvelles versions, je savais pas...
        Sinon si tu as juste cette requete, oui c'est facile:
        SELECT * FROM table WHERE id=MAX(id);

        C'est meme pas souhaitable de les imbriquer (ou j'ai pas les yeux en face de trous :o) )

        .  .  Bon!Si on m'empeche de travailler
        \_/  Je ne me debattrai pas!
        0
        1. Contributeur
          Oops. ou pas le cerveau en place, pardon, ca serait plutot:
          SELECT *, MAX(id) as max FROM table WHERE id=max;

          .  .  Bon!Si on m'empeche de travailler
          \_/  Je ne me debattrai pas!
          0
          1. Contributeur
            Ou encore
            SELECT * FROM table HAVING id=MAX(id);

            .  .  Bon!Si on m'empeche de travailler
            \_/  Je ne me debattrai pas!
            0
            1. Contributeur
              Sinon si c'est un id, je suppose qu'elle est unique, si c'est le cas:
              SELECT * FROM table ORDER BY id DESC limit 1; ;

              Tu me dis lequel marche :o)
              Sinon je devrais me replonger dans ma doc :o)

              .  .  Bon!Si on m'empeche de travailler
              \_/  Je ne me debattrai pas!
              0
              1. SELECT * FROM table ORDER BY id DESC limit 0,1; plutot, non ?

                Kalamit,
                Parle à ma culasse, mon carter est malade. :)
                0
                1. Merci beaucoup pour toutes ses réponses, je n'en attendais pas tant, me voilà comblé! :)
                  Je vais essayer la dernière qui me semble la plus judicieuse et à laquelle je n'avais pas pensé (comme quoi quand on est bloqué une heure sur un pauvre truc on voit plus rien d'autre lol).
                  Encore une fois merci beaucoup à vous 3, sebsauvage, teebo et kalamit.
                  0
                  1. Petite précision: j'avais déjà essayé les solutions des réponses 3 et 5 mais elles ne fonctionnaient pas non plus.
                    0