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 :

Utilisation de MAX dans une requête SQL


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Utilisation de MAX dans une requête SQL
    Salut !
    Je bloque sur une requête très facile sans doute à cause d'une syntaxe défaillante, si vous pouviez m'aider...

    Je veux récupérer le dernier numéro d'identifiant (N) dans une table (PARADOX) pour l'incrémenter :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT id_num
    FROM ma_table
    WHERE id_num= MAX(id_num);
    Ceci me renvoie : fonctionnalité non supportée !

    Merci d'avance !
    2 choses sont infinies : l'univers et la connerie humaine. Cependant je n'ais pas encore acquis de certitude absolue pour l'univers. (Einstein)

  2. #2
    Membre confirmé
    Avatar de hachesse
    Inscrit en
    mars 2002
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 189
    Points : 623
    Points
    623
    Par défaut
    salut

    et comme ca???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(id_num) 
    FROM ma_table

  3. #3
    Futur Membre du Club
    Inscrit en
    juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    OKi... et le champs qui résulte de cette requête s'appelle comment ???
    Parce que j'ais déjà utilisé cette syntaxe mais lorsque je veux récupérer le champs (sous DELPHI) j'ai le message suivant : champs id_num non trouvé !! : : :
    2 choses sont infinies : l'univers et la connerie humaine. Cependant je n'ais pas encore acquis de certitude absolue pour l'univers. (Einstein)

  4. #4
    Membre confirmé
    Avatar de hachesse
    Inscrit en
    mars 2002
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 189
    Points : 623
    Points
    623
    Par défaut
    tu peu lui donnée un nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(id_num) AS id_max 
    FROM ma_table
    et la ton champ s'appel id_max

  5. #5
    Futur Membre du Club
    Inscrit en
    juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    MERCI c'est parfait
    2 choses sont infinies : l'univers et la connerie humaine. Cependant je n'ais pas encore acquis de certitude absolue pour l'univers. (Einstein)

  6. #6
    Membre habitué
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2002
    Messages : 119
    Points : 126
    Points
    126
    Par défaut
    par contre comment on recupe la valeur dans une variable apres ??

    moi j ai ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    requete :='select max(Id) from tblvisuel';
            Query1.SQL.Clear;
            Query1.SQL.add(requete);
            Query1.ExecSQL;
            Query1.open;
     
            idvisuel:= Query1.fieldbyname('Id').AsString ;
    ca me met arrivé a id visuel "champ id non trouvé"

    merci

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : janvier 2004
    Messages : 15 967
    Points : 19 066
    Points
    19 066
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete :='select max(Id) max_id from tblvisuel'; 
            Query1.SQL.Clear; 
            Query1.SQL.add(requete); 
            Query1.ExecSQL; 
            Query1.open; 
     
            idvisuel:= Query1.fieldbyname('max_id').AsString ;
    Il faut donner un alias

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    octobre 2002
    Messages
    923
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2002
    Messages : 923
    Points : 1 110
    Points
    1 110
    Par défaut
    Attention aux accès concurrents, que se passe t-il si deux personnes essaie de créer un enregistrement en même temps.
    Cela ne semble pas la bonne solution pour générer une bonne clé auto incrémentée.
    Ce cas a déjà été évoqué plusieurs fois, faites une recherche.
    Et il me semble que SQL pro sur son site explique pourquoi c'est une mauvaise idée.
    a+
    soazig

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Utilisation de Datediff dans une requête SQL
    Par ted the Ors dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 06/01/2011, 11h25
  2. Réponses: 13
    Dernier message: 21/05/2010, 16h54
  3. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  4. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  5. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum Langage
    Réponses: 8
    Dernier message: 07/09/2006, 22h38

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