Requete sql

rucht Messages postés 248 Statut Membre -  
rucht Messages postés 248 Statut Membre -
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. grofwa Messages postés 440 Statut Membre 479
     
    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
    1. rucht Messages postés 248 Statut Membre 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 ... )
      0
  2. yann
     
    tu peut faire

    select last (titre) from tatable group by series order by no
    0
    1. rucht Messages postés 248 Statut Membre 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... )
      0
  3. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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"
    0
  4. LeSousss Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   15
     
    Slt,
    je ne suis pas sur mais essaye ca :
    select distinct(serie), max(no), titre from table
    dis moi si ca va
    0
    1. rucht Messages postés 248 Statut Membre 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 ... )
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. grofwa Messages postés 440 Statut Membre 479
     
    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]
    0
    1. rucht Messages postés 248 Statut Membre 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 ... )
      0
    2. grofwa Messages postés 440 Statut Membre 479
       
      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]
      0
    3. grofwa Messages postés 440 Statut Membre 479
       
      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]
      0
      1. rucht Messages postés 248 Statut Membre 1 > grofwa Messages postés 440 Statut Membre
         
        oui 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 ... )
        0
      2. rucht Messages postés 248 Statut Membre 1 > grofwa Messages postés 440 Statut Membre
         
        requê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 ... )
        0
  7. ric
     
    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.
    0
    1. rucht Messages postés 248 Statut Membre 1
       
      tu propose quoi ?

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