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

Bases de données Delphi Discussion :

Max sur deux champs


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Max sur deux champs
    Bonjour,

    J'ai des difficulté pour utiliser la fonction max sur 2 champs.
    Dans la table il y a les champs : numéro, index mois et année.
    chaque numéro a un index par mois.
    Nous somme au 10/2007. il se trouve que certains index ne sont pas saisies.
    Je veux une requête sql qui permet de faire ressortir le dernier index saisie pour chaque numéro, quelque soit l'année ou le mois.
    J'ai utilisé cette requête qui n'a rien donnéé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select index from CLIENT
    where N_ANNEE in(select max(N_ANNEE) from client)
    and N_MOIS in(select max(N_MOIS) from CLIENT)
    J'utilise oracle.
    Merci d'vance.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    essaye plutôt de faire un GROUP BY ...

    SELECT index
    FROM client
    where index is not null
    group by N_ANNEE, N_MOIS
    order by N_ANNEE desc , N_MOIS desc
    ça te donnera pour chaque couple année moi, l'index, ensuite, tu peux jouer les malin, et extraire les plus grand uniquement couple N_ANNEE, N_MOIS par numéro, via une table temporaire (en MySQL c'est ce que je fais, j'ai peu travaillé sur Oracle, mais cela doit bien exister quelque part dans cette monstrueuse usine à gaz ...)

    en supposant que N_ANNEE varie de 0000 à 9999 et N_MOIS de 1 à 12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TEMPORARY TABLE client_index_mois_annee
    (
    SELECT numero, MAX(N_ANNEE * 100 + N_MOIS) as N_ANNEE_MOIS
    FROM client
    GROUP BY numero
    )
     
    SELECT index, N_ANNEE, N_MOIS  
    FROM client, client_index_mois_annee
    where client.index is not null
    and client.N_ANNEE * 100 + client.N_MOIS = client_index_mois_annee.N_ANNEE_MOIS
    order by client.N_ANNEE desc , client.N_MOIS desc
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'ai exécuter la requête, mais elle ne donne pas le résultat que je veux.
    Elle liste tous les index de chaque mois. Alors que je veux qu'il affiche seulement par client le dernier index saisie.
    Je pense que je me fait comprendre.
    Merci.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour ma part je verrai plus la requete comme cela.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select Annee, Mois, Numero , Max(Index) from Client
    Group By Anne,Mois,Numero
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Effectivement, j'ai au début pensé la même requête que Rayek, mais cela donne le plus haut index par numéro, mois, année, hors si j'ai bien compris, tu voudrais l'index saisie en dernier dans l'ordre chronologique ?

    Sinon, tu as testé ma première requête, effectivement, elle ne donnera pas de résultat probant, mais as-tu testé la seconde via table temporaire ?

    Sinon Oracle permet les procédures stockées, avec cuseur, boucle, ... tu peux le faire en PL/SQL ou en Pro*C ... cette base de données permet des calculs intégrés extrémement puissants autant en profiter ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. requête max sur plusieurs champs
    Par logica dans le forum Access
    Réponses: 3
    Dernier message: 28/03/2006, 16h31
  2. Tri sur deux champs en même temps
    Par Azharis dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 13h10
  3. [MYSQL] Problème ORDER BY sur deux champs
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 14/10/2005, 16h46
  4. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 18h26

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