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. 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 ... )
  3. 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 ... )
  4. 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 ... )
  5. 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. 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... )