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

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : mars 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupérer la valeur max d'une colonne et l'afficher dans une autre colonne
    Bonjour à vous,

    Je rencontre depuis plusieurs jours un problème pour récupérer une valeur max dans une colonne (circulation_ligne) et l'afficher dans une autre colonne.
    La requête suivante me ramène les éléments souhaités :

    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
     
     
    SELECT
    	L.ID_LIGNE,
    	L.NOM_LIGNE,
    	G.NOM_GRILLE,
    	S.NOM_SENS,
    	M.NUMERO_MOYEN,
    	L.CIRCULATION_LIGNE
    FROM
    	LIGNE L
    JOIN MOYEN M ON
    	M.ID_MOYEN = L.ID_MOYEN
    JOIN GRILLE G ON
    	G.ID_GRILLE = L.ID_GRILLE
    JOIN SENS S ON
    	S.ID_SENS = L.ID_SENS
    et j'obtiens la sortie suivante, ce qui est normal :

    Nom : Capture.PNG
Affichages : 37
Taille : 12,1 Ko


    En revanche, je n'arrive pas à récupérer la valeur max, ici 280, pour l'afficher dans une autre colonne (voir sortie ci-après). J'ai essayé de passer par une sous-requête mais je n'y suis pas arrivé. Pensez-vous que cela est possible en SQL ?

    Nom : Capture1.PNG
Affichages : 32
Taille : 13,3 Ko

    En vous remerciant.

    Bien à vous.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    7 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 7 076
    Points : 22 462
    Points
    22 462
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    C'est tout à fait possible, mais votre modèle de données semble mal construit : pour un même libellé de ligne on trouve des identifiants de lignes et des valeurs "circulation ligne" différents.

    Voici un exemple construit sur deux tables seulement, le principe ne change pas avec plus de tables

    Tout d'abord, création d'un jeu d'essai cohérent : 1 ligne <=> 1 libellé de ligne et valeurs multiples de "circulation" déportées dans une autre table liée
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    with LI_ligne(LI_ident, LI_nom) as
       (select 1, 'Avignon centre - Mâcon ville'                 union all
        select 2, 'Glumote les arpions - Sédoret sur tranche'    union all
        select 3, 'Trifouilli les cactus - Paris texas'
       )
       , CR_circul(LI_ident, CR_ident, CR_valeur) as
       (select 1, 1, 120   union all
        select 1, 2, 200   union all
        select 1, 3, 150   union all
        select 2, 1, 080   union all
        select 2, 2, 040   union all
        select 2, 3, 065   union all
        select 2, 4, 070   union all
        select 3, 1, 130
       )

    La requête qui suit :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select LI.LI_ident
         , LI.LI_nom
         , CR.CR_ident
         , CR.CR_valeur
         , max(CR.CR_valeur) over(partition by LI.LI_ident) as maxi
    from LI_ligne LI
    inner join
        CR_circul CR
       on CR.LI_ident=LI.LI_ident

    Donne le résultat attendu :
    LI_ident LI_nom CR_ident CR_valeur (maxi)
    1 Avignon centre - Mâcon ville 2 200 200
    1 Avignon centre - Mâcon ville 3 150 200
    1 Avignon centre - Mâcon ville 1 120 200
    2 Glumote les arpions - Sédoret sur tranche 2 40 80
    2 Glumote les arpions - Sédoret sur tranche 3 65 80
    2 Glumote les arpions - Sédoret sur tranche 4 70 80
    2 Glumote les arpions - Sédoret sur tranche 1 80 80
    3 Trifouilli les cactus - Paris texas 1 130 130

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : mars 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupérer la valeur max d'une colonne et l'afficher dans une autre colonne
    Merci beaucoup pour votre retour.
    Vous avez raison la modélisation de la base de données est bancale, j'ai fait des choix techniques pour me faciliter l'importation de données issues d'un fichier Excel mais je m'aperçois qu'à terme cela va aboutir à des impasses. Je vais reprendre la modélisation pour qu'elle soit plus cohérente.

    Encore merci.

    Bien à vous.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 21/05/2010, 13h36
  2. [MySQL] récupérer la valeur résultant d'une requête SELECT MAX
    Par dabac dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/02/2010, 20h02
  3. valeurs max d'une colonne
    Par docteurdorian dans le forum Langage SQL
    Réponses: 12
    Dernier message: 06/05/2009, 14h52
  4. récupérer la val max d'une colonne
    Par nb_fr31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/10/2007, 17h26
  5. Réponses: 2
    Dernier message: 01/12/2006, 10h09

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