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

Requêtes et SQL. Discussion :

N'afficher que les x premiers enregistrements [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut N'afficher que les x premiers enregistrements
    Bonjour tout le monde.
    Un morceau du schéma de ma base de données est attaché en PJ.

    Je souhaiterais :
    - N'afficher dans une zone de liste de mon formulaire que les 8 motifs les plus utilisés. C'est à dire ceux dont le NumMotif apparait le plus de fois dans la table Avoir.
    - J'ai ajouté un bouton "Plus de motifs..." sur le formulaire permettant d'afficher le reste des motifs. Les motifs présents dans le formulaire principal, à savoir le "top 8" des motifs les plus utilisés, ne doivent pas apparaitre ici.
    De plus il faudrait que s'il n'y a aucun motif ou moins de 8 dans la table Avoir, apparaissent les 8 premiers motifs de la table MOTIF classés par NumMotif.

    Est-ce possible ?
    J'ai trouvé les opérateurs TOP et LIMIT mais ma seconde contrainte me bloque

    Merci d'avance à ceux qui me liront.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    salut,
    quelles sont tes requêtes actuelles stp ?
    on va se baser là dessus pour avancer

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Pour la première requête, j'ai fait ça (mais ça ne retourne rien) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 8 M.LibMotif, M.NumMotif
    FROM MOTIF M
    GROUP BY M.NumMotif, M.LibMotif
    HAVING Max(SELECT COUNT(Av.NumMotif) FROM Avoir Av WHERE Av.NumMotif=M.NumMotif);

    Pour la seconde, il suffit d'afficher tous les motifs qui ne sont pas dans ma première requête, donc pas de soucis ^^

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    ok,
    je propose une approche avec plus de sous-requête :
    un exemple
    etape 1
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT() ... FROM...
    etape 2
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 8 FROM (SELECT COUNT() ... FROM ...)

  5. #5
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Euh, désolé je vois pas trop là
    C'est pas ce que j'ai fait ?

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 862
    Points : 58 414
    Points
    58 414
    Billets dans le blog
    44
    Par défaut
    Bonsoir,

    et avec celle-là ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 8 Motif.NumMotif, Motif.LibMotif
    FROM Motif INNER JOIN Avoir ON Motif.NumMotif = Avoir.NumMotif
    GROUP BY Motif.NumMotif, Motif.LibMotif
    ORDER BY Count(Avoir.NumMotif) DESC ;

  7. #7
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Bonjour f-leb,

    C'est bien ça mais ça me retourne les 16 enregistrements alors qu'il ne me faut les 8 premiers.
    Sinon le classement est bon.
    Je me suis pris la tête avec une requête compliquée alors que c'était vachement plus simple en fait
    Bizarre que le TOP 8 ne marche pas

  8. #8
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Bon j'ai laissé tomber le top 8.
    J'affiche les 16 mais par ordre d'utilisation avec la requête que tu m'as donnée.
    Ça m'aurait quand même intéressé de savoir mais tant pis

    Bonne soirée

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 862
    Points : 58 414
    Points
    58 414
    Billets dans le blog
    44
    Par défaut
    salut,

    Citation Envoyé par azertix
    ...Ça m'aurait quand même intéressé de savoir mais tant pis
    arf, trop impatient tu es

    essayons avec:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT TOP 8 * FROM 
    (
      SELECT Motif.NumMotif, Motif.LibMotif
      FROM Motif INNER JOIN Avoir ON Motif.NumMotif = Avoir.NumMotif
      GROUP BY Motif.NumMotif, Motif.LibMotif
      ORDER BY Count(Avoir.NumMotif) DESC 
    )

  10. #10
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    C'est bien ça \o/

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/11/2008, 23h27
  2. afficher les 10 premiers enregistrements pour chaque groupe
    Par freestyler dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2008, 16h46
  3. enregistrer que les 2 premieres lettres d'une phrase
    Par pepsister dans le forum GTK+ avec C & C++
    Réponses: 14
    Dernier message: 30/04/2007, 00h05
  4. Prendre que les 5 premiers enregistrements (les + important)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/11/2005, 10h24
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 11h59

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