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

Langage SQL Discussion :

MAX() ??!!


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut MAX() ??!!
    Bonjour à tous !!

    Voila j'ai une base, avec 5 champs, donc l'identifiant et en int en auto_increment.

    j'aimerais effectuer une requete qui me donnerai le plu grand chiffre du champs "id" (mon identifiant de la table) avec les autre champ correspondant...

    merci d'avance...

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX(MyID), CHP1, CHP2, ...
    FROM MYTABLE
    GROUP BY CHP1, CHP2, ...
    devrait convenir

    PS : fais attention aux termes que tu utilises

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut marche po sans GROUP BY ...
    merci pour ta reponse !

    mais le problème c'est que cela ne marche pas... il n'en veut pas sans un GROUP BY...

    PS : mysql 4.1

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Tu peux nous donner le schéma de tes tables et de leurs attributs ?

    Merci d'avoir pensé à indiquer ton SGBD et sa version (surtout pour MySQL)

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    c'est pas beau mais sa doit marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table where id in (select max(id) from table);

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Cybher
    c'est pas beau mais sa doit marcher
    Si, si, c'est joli, rien de choquant, je te rassure. Tant qu'à faire, comme on sait que la sous-requête ne ramène qu'une ligne, pas besoin du "IN", on peut directement faire le "="
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table where id = (select max(id) from table);

  7. #7
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    c'est vrai que le IN n'est pas obligatoire.

    Par contre je trouve sa "pas beau" de faire une requete imbriqué alors que c'est simple ce qu'il faut faire.

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Cybher
    Par contre je trouve sa "pas beau" de faire une requete imbriqué alors que c'est simple ce qu'il faut faire.
    Tu préfères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.id
    FROM laTable a INNER JOIN laTable b ON a.id <= b.id
    GROUP BY a.id
    HAVING COUNT(*) = 1

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    ohhh une jolie jointure!!!
    je sais pas si c'est mieux...
    mais au moins sa passe sur toutes les sgbd

    par contre j'ai déja eu des problème avec le count(*).

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut merci !!
    Je vous remercie beaucoup de vos reponses !! Mais ça ne fonctionne toujours pas !!

    voila l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Erreur
     
    requête SQL : 
     
    SELECT *
    FROM news
    WHERE id
    IN (
     
    SELECT max( id )
    FROM news
    )
     
    MySQL a répondu:
     
    #1064 - Erreur de syntaxe près de 'SELECT max( id ) 
    FROM news )' à la ligne 5
    Sinon j'ai pensé faire deux requetes une qui me donne le MAX(id) ensuite la deuxième qui me donne les champs qui correspondent mais c pas trè jolie... :-(

    HELP ME !!

  11. #11
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Normalement mySQL 4.1 supporte les requêtes imbriquées .

    Sinon tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.id 
    FROM laTable a INNER JOIN laTable b ON a.id <= b.id 
    GROUP BY a.id 
    HAVING COUNT(*) = 1
    qui ne contient pas de sous-requête

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut

    j'ai testé la requête que je t'ai proposé, elle fonctionne chez moi.
    je suis sur mysql 4.1

    met toujours le code pour créer ta table plus un code pour une insertion de quelques enregistrements.
    je testerai avec ta table.

    Bye

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut code
    Merci Cybher !!

    Voila le code de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE TABLE `news` (
      `id` int(11) NOT NULL auto_increment,
      `date_news` datetime NOT NULL default '0000-00-00 00:00:00',
      `createur` varchar(10) NOT NULL default 'Admin',
      `titre` varchar(25) NOT NULL default '',
      `news` longtext,
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM COMMENT='table répertoriant les news du site Acebo' AUTO_INCREMENT=47 ;
     
    #
    # Contenu de la table `news`
    #
     
    INSERT INTO `news` VALUES (44, '2005-08-20 22:29:42', 'Admin', 'qsdfqsdfqsdfqsdf', 'qsdfqsdfqsdfqsdfqsdfqsdfqsdfq');
    INSERT INTO `news` VALUES (45, '2005-08-21 13:34:16', 'Admin', 'fqsdfhjqkljsh', 'jkhdskjfhqlskdjfhqksdhfkqjsdhfkqjsdhfkjqshdfkqh\'\'\'\'\'\'sdfqsdgfdfgd&é"\'(-è_çà)=');
    INSERT INTO `news` VALUES (43, '2005-08-20 22:29:37', 'Admin', 'dfqsdf', 'fqsdfqsdf');
    INSERT INTO `news` VALUES (46, '2005-08-21 13:35:24', 'Admin', 'dfgsdfgsdfg', 'sdfgsdfgsdfgsdfgsdfgsdfgsdfg');
    Merci de ton aide!!

  14. #14
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from news where id = (select max(id) from news);
    j'obtiens bien la ligne avec l'id 46

    sinon ton insertion de données est bizarre si tu fais un autoincrement sur l'id.
    tu peux toujours mettre 0, l'id sera calculé automatiquement

Discussions similaires

  1. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 19h38
  2. definir un nombre decimal sur 2 numero max apres la vergule
    Par nil dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/02/2004, 22h49
  3. Max
    Par MASSAKA dans le forum Requêtes
    Réponses: 8
    Dernier message: 14/01/2004, 18h44
  4. opengl et 3dstudio max
    Par maamar dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/09/2002, 21h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 03h40

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