Requete sql

bonjour tout le monde !!!

j' ai un probleme ! ( sinon je serai pas en train d' ecrire ce post me direz vous ... )

voila :

j' ai un tableau a troi champ "utile" : 'titre' , 'no' , 'serie'

c pour ranger des boukin

j' aimerai affichez le titre du dernier no de chaque serie !

quelle est la bonne requete pour faire exactement sa ??

sa fait trois jour que je galaire !

help please !!! ( appel desepere...)

rucht ( qui galaire meme en vacance !!! )

6 réponses

  1. Salut,

    En MySql, tu peux faire ceci :

    SELECT titre, MAX(numero), serie
    FROM tab
    GROUP BY serie

    Et ça marche !!!!
    (mais n'essaie pas sous Oracle !)

    Michael.

    Ne vous souciez pas de n'être pas remarqué ; cherchez 
    plutôt à faire quelque chose de remarquable [Confucius]
    1. je sais mais je ne veut que le titre du plus grand numero !

      j' ai une methode speciale pour traiter les info et sa bugue quand je recupere plusieur chose avec le select ( mais apres j' ai des faciliter partout ... ) quand je fais sa la requete marche mais sa bugue quand je traite l' info !

      il me faut donc un " select titre from ... "

      rucht ( qui n' utilise pas la meilleure methode mais qui la trouve pratique ... )
  2. tu peut faire

    select last (titre) from tatable group by series order by no
    1. il y a un erreur !!!

      voila :
      Erreur

      requête SQL :

      SELECT last(

      titre
      )
      FROM TABLE
      GROUP BY serie
      ORDER BY no

      MySQL a répondu:

      #1064 - Erreur de syntaxe près de '( titre )
      FROM TABLE
      GROUP BY serie
      ORDER BY no' à la ligne 1

      je ne connait pas la fonction 'last' donc je ne vois pas ce qui cloche ci qq 'un voit ...

      rucht ( qui cherche quand meme... )
  3. Modérateur
    La fonction last est propre à ACCESS, me semble-t'il...
    En SQL standard, il existe max qui renvoie la plus grande valeur d'un champ.

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    1. Slt,
      je ne suis pas sur mais essaye ca :
      select distinct(serie), max(no), titre from table
      dis moi si ca va
      1. non:

        Erreur

        requête SQL :

        SELECT DISTINCT (

        serie
        ), max( no ) , titre
        FROM `TABLE`
        LIMIT 0 , 30

        MySQL a répondu:

        #1140 - Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY

        et je vois pas commen y remedier...

        rucht ( qui va chercher ... )
    2. Je dirais comme ceci :

      select titre
      from table t1, (select max(no)max_no, serie from table group by serie) t2
      where t1.NO = t2.max_no
      and t1.serie = t2.serie


      En Oracle, ça fonctionnera.
      Ne vous souciez pas de n'être pas remarqué ; cherchez 
      plutôt à faire quelque chose de remarquable [Confucius]
      1. sa marche pas non plus :

        Erreur

        requête SQL :

        SELECT titre
        FROM `TABLE` t1, (

        SELECT max( no ) max_no, serie
        FROM TABLE GROUP BY serie
        )t2
        WHERE t1.NO = t2.max_no AND t1.serie = t2.serie

        MySQL a répondu:

        #1064 - Erreur de syntaxe près de 'SELECT max( no ) max_no, serie
        FROM TABLE GROUP BY serie )t2
        ' à la ligne 3

        mais vu que j' utilise mysql c 'est peut etre normal ...

        rucht ( qui va chercher de ce cote la aussi ... )
      2. Evidemment, si j'avais lu tout, j'aurais vu :-(

        Tu es obligé de faire une seule requête ? Sinon, tu fais
        SELECT max( no ) max_no, serie 
        FROM TABLE GROUP BY serie


        et puis pour chaque max_no et serie, tu vas chercher le titre de la BD
        c'est des bd, non ? Je dis ça parce que je l'ai fait pour moi, mais c'était en delphi à l'époque.

        michael.

        Ne vous souciez pas de n'être pas remarqué ; cherchez 
        plutôt à faire quelque chose de remarquable [Confucius]
      3. Bon, d'après la doc Mysql (mais j'ai pas réussi à trouver à partir de quelle version), ceci est possible :
        SELECT titre, serie
        FROM tab
        WHERE (numero, serie) IN
        ( SELECT max(numero) as numero, serie
        FROM tab
        GROUP BY serie)

        Mais sinon, en cherchant un peu sur le net (google(mysql select where +in group by subquery)), j'ai trouvé le même problème que toi, et il confirme ce que j'ai mis dans le commentaire précédent.

        A toi de voir !
        http://www.webhostingtalk.com/showthread.php?threadid=211593

        Ne vous souciez pas de n'être pas remarqué ; cherchez 
        plutôt à faire quelque chose de remarquable [Confucius]
      4. @grofwaoui c 'est pour des bd !

        j' ai pas pu teste ta methode j' ai pas le bon ordi sous la main ...

        d' apres ce que j' ai compri (je debute ... )
        il est possible de faire sa :

        SELECT titre
        FROM tab
        WHERE (numero, serie) IN
        ( SELECT max(numero) as numero, serie
        FROM tab
        GROUP BY serie)


        ou le
        serie
        dans le premier select est indispenssable ?

        rucht ( qui utilise un methode speciale pour traiter ces info ... )
      5. @grofwarequête SQL :

        SELECT titre, serie
        FROM `table`
        WHERE (

        numero, serie
        )
        IN (

        SELECT max( numero ) AS numero, serie
        FROM `table`
        GROUP BY serie
        )
        LIMIT 0 , 30

        MySQL a répondu:

        #1064 - Erreur de syntaxe près de ' serie )
        IN (
        SELECT max( numero ) AS numero, serie
        FROM `tab' à la ligne 3

        sa ne marche pas !!

        :-(

        rucht ( qui cherche ... )
    3. Bonjour
      Les requêtes imbriquées n'existent pas encore avec MySql.
      Je crois que ce sera dans la version 4.1.
      Il faut passer par les jointures.
      1. tu propose quoi ?

        rucht ( qui sais pas utiliser les jointures ... )