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 :

Comment récuperer un élément d'une liste


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut Comment récuperer un élément d'une liste
    Bonjour,

    Je fais une première requete me permettant de classer par ordre décroissant des auteurs en fonction du nombre d'articles publiés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COUNT( titre ) , nomAut, prenomAut
    FROM aecrit
    JOIN auteur ON aecrit.email = auteur.email
    GROUP BY nomAut
    ORDER BY (
    COUNT( titre )
    ) DESC
    Je souhaiterai faire une seconde requete qui me selectionne seulement le premier de la liste précédente. Je ne vois pas comment faire.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Je vois deux solutions possibles. Si ton SGBD les supportes, tu peux utiliser les mots clefs LIMIT, TOP ou FIRST. Cela dit, ces clauses ne font pas partie du standard SQL donc à éviter je pense.
    La deuxième solution, serait de récupérer l'auteur ayant publié le plus de publications (MAX). C'est le premier de la liste car tu ordonnes ta liste sur le compte des publications de façon décroissante.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Oui c'est ce que je fais avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MAX(SELECT COUNT( titre ) , nomAut, prenomAut
    FROM aecrit
    JOIN auteur ON aecrit.email = auteur.email
    )
    Mais il me dit erreur de GROUP.

    Merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Pour le nombre de titre max c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select Max(nbre_titre) as max_nbre_titre
    from
    (
    SELECT COUNT( titre ) as nbre_titre, nomAut, prenomAut
    FROM aecrit
    JOIN auteur ON aecrit.email = auteur.email
    GROUP BY nomAut, prenomAut
    ) as T
    Mais je viens de voir avec horreur qu'on dirait que la clé de auteur est email, ce qui me parait une très mauvaise idée, un email ça change, donc ce n'est pas une clé très valide.


    Pour la ligne correspondant au max, je verrais bien une requête comme celle là
    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
    Select nomAut, prenomAut, AU.email, NL.nbre_titre
    from auteur AU
    inner join 
    (
    	SELECT COUNT( titre ) as nbre_titre, email
    	FROM aecrit A
    	GROUP BY email
    ) as NL
    on AU.email=NL.email
    inner join
    (
    	Select Max(nbre_titre) as max_nbre_titre
    	from
    	(
    	SELECT COUNT( titre ) as nbre_titre, email
    	FROM aecrit A
    	GROUP BY email
    	) as T
    ) as T2
    on NL.nbre_titre=T2.max_nbre_titre
    a+
    Soazig

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Quel est votre SGBD ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/03/2008, 21h55
  2. Réponses: 8
    Dernier message: 01/03/2008, 13h33
  3. Comment récuperer un élément dans une listview lors d'une sélection
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 02h37
  4. Réponses: 1
    Dernier message: 20/06/2006, 14h32
  5. Réponses: 3
    Dernier message: 15/05/2006, 16h09

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