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 :

Aide pour un SELECT MAX(...)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 33
    Points
    33
    Par défaut Aide pour un SELECT MAX(...)
    Voilà, j'ai une table de lignes de factures :
    type - code_facture - ligne_facture - montant...
    F 1234 0 2132
    F 1234 1 531
    F 5123 0 789
    F 5123 1 315
    F 5123 2 214
    F 456 0 415


    Je souhaiterais avoir une requete qui m'affiche :
    type - code_facture - ligne_facture - montant - MAX_LIG
    F 1234 0 2132 1
    F 1234 1 531 1
    F 5123 0 789 2
    F 5123 1 315 2
    F 5123 2 214 2
    F 456 0 415 0

    En gros, toutes les lignes, et pour chaque ligne, et pour chaque facture différente, le max des lignes de cette facture...
    Possible ?
    Merci d'avance...

  2. #2
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Salut,

    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.type, a.code_facture, a.ligne_facture, a.montant, b.max_lig
    FROM ta_table a, (SELECT type, code_facture,
                                     max(ligne_facture) as max_lig
                               FROM ta_table
                               GROUP BY type, code_facture) b
    WHERE a.type=b.type
    AND a.code_facture=b.code_facture

  3. #3
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Salut,

    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.type, a.code_facture, a.ligne_facture, a.montant, b.max_lig
    FROM ta_table a, (SELECT type, code_facture,
                                     max(ligne_facture) as max_lig
                               FROM ta_table
                               GROUP BY type, code_facture) b
    WHERE a.type=b.type
    AND a.code_facture=b.code_facture

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Salut,

    Moir j'aurais fait quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select type, code_facture, ligne_facture, montant, max (LIG)
    from maTable
    group by type, code_facture, ligne_facture, montant
    A tester!

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Si ton SGBD supporte les function de regroupement analytiques, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select	TYPE
    	,	CODE_FACTURE
    	,	LIGNE_FACTURE
    	,	MONTANT
    	,	max(LIGNE_FACTURE)	over(partition by TYPE, CODE_FACTURE) as MAX_LIG
    from	...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 33
    Points
    33
    Par défaut
    nantais > Euh... le principe est pas mal, mais visiblement ODBC n'aprécie pas... Je touche des base DBF par l'intermédiaire de ce pilote et il me dit qu'il n'arrive pas à ouvrir '(.DBF'... Visiblement un SELECT dans un nom de table, il n'aime pas

    linou > Euh, non. Ca me retourne toutes les lignes, avec dans mon champ MAX_LIG les numéros de ligne, et pas le max des lignes pour la facture courante... :-)

    al1_24 > Euh, non. 'INVALID OPERATOR: over' :-) mais merci quand même...

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Il ne te reste plus qu'à passer par une table temporaire, puisque, apparemment, ton driver ODBC ne supporte pas les sous-requêtes.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    create table TEMP_MAX
    (	TYPE            ...
    ,	CODE_FACTURE	...
    ,	MAX_LIG			...
    )
    as
    (select	TYPE
    	,	CODE_FACTURE
    	,	max(LIGNE_FACTURE) as MAX_LIG
    from	MA_TABLE
    group by	TYPE
    	,	CODE_FACTURE
    )
    ;
     
    select	FAC.TYPE
    	,	FAC.CODE_FACTURE
    	,	FAC.LIGNE_FACTURE
    	,	FAC.MONTANT
    	,	LIG.MAX_LIG
    from	MA_TABLE	as FAC
    	inner join
    		TEMP_MAX 	as LIG
    		on	FAC.TYPE			= LIG.TYPE
    		and	FAC.CODE_FACTURE	= LIG.CODE_FACTURE
    ;
     
    drop table TEMP_MAX
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 33
    Points
    33
    Par défaut
    ok merci à toi...
    Je v essayer de me débrouiller avec çà... même je v pas pouvoir faire de table séparée... je v tenter de découper le traitement

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

Discussions similaires

  1. Aide pour divers SELECT
    Par GoustiFruit dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/02/2013, 11h49
  2. Besoin d'aide pour un Select
    Par Grooz13 dans le forum IHM
    Réponses: 5
    Dernier message: 13/07/2010, 20h52
  3. Aide pour requête SELECT relativement simple.
    Par Ambuletz dans le forum Requêtes
    Réponses: 14
    Dernier message: 02/03/2010, 10h27
  4. aide pour un select dynamique
    Par hartecel dans le forum Langage
    Réponses: 5
    Dernier message: 04/06/2008, 17h51
  5. [VBA-Excel] aide pour maccro (selection)
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/02/2006, 08h53

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