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 :

numéroter les lignes par groupe


Sujet :

Langage SQL

  1. #1
    Membre éprouvé Avatar de Kurdran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 122
    Par défaut numéroter les lignes par groupe
    Bonjour,

    Voila mon problème : j'ai les deux tables suivantes
    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
     
    <Table Name="Cons">
      <Columns>
        <Column Name="Cons_ID"/>
        <Column Name="A"/>
      </Columns>
    </Table>
    <Table Name="Or">
      <Columns>
        <Column Name="Or_ID"/>
        <Column Name="Cons_ID"/>
        <Column Name="S1"/>
        <Column Name="S2"/>
      </Columns>
    </Table>
    Et je souhaiterai faire une vue qui me sorte la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <View Name="Print">
      <Columns>
        <Column Name="A"/>
        <Column Name="Line"/>
        <Column Name="S1"/>
        <Column Name="S2"/>
      </Columns>
    </View>
    De tel facon ou le numéro de ligne (la colonne "Line") démarre à 1 pour chaque valeur de la colonne A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     A   | Line | S1   | S2
    --------------------------
    A001 | 1    | ATCG | 
    A001 | 2    | CG   | AT
    A001 | 3    | GCAT | TA
    A002 | 1    | GCTA | TATT
    Mon soucis c'est que la je ne vois pas du tout comment faire que la séquence recommence pour chaque A différent.

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Avec une seule table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select colgroup, coltri, 
    (SELECT COUNT(*)
    FROM TATABLE
    WHERE A.COLGROUP = COLGROUP
    AND A.COLTRI > COLTRI)
    FROM TATABLE a
    ORDER BY COLGROUP
    Sur une jointure, c'est la même...

  3. #3
    Membre éprouvé Avatar de Kurdran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 122
    Par défaut
    Merci pour votre réponse, je vais l'essayer et je vous tiens au courant.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    quel type de base de donnée est-ce ?

    En sql server il y a bien la méthode Dense_Rank

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    Utiliser une fonction analytique et sa clause de fenêtrage de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT A, ROW_NUM() OVER(PARTITION BY A ORDER BY S1, S2)
    FROM   MaTable
         INNER JOIN MonAutreTable
             ON ???
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre éprouvé Avatar de Kurdran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 122
    Par défaut
    Citation Envoyé par oadin Voir le message
    quel type de base de donnée est-ce ?

    En sql server il y a bien la méthode Dense_Rank
    Ma base de données c'est Oracle.

  7. #7
    Membre éprouvé Avatar de Kurdran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 122
    Par défaut
    Bon je vous remercie tous. La première solution a été la bonne (même si j'aime pas faire de select dans le select)

  8. #8
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Utiliser une fonction analytique et sa clause de fenêtrage de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT A, ROW_NUM() OVER(PARTITION BY A ORDER BY S1, S2)
    FROM   MaTable
         INNER JOIN MonAutreTable
             ON ???
    A +
    C'est sur tous les SGBD ?

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    C'est dans la norme SQL ANSI...
    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.

  10. #10
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Hmmm, c'est ce que j'avais cru lire sur msdn, mais hier sur le même genre de besoin, j'ai cru comprendre qu'il y a pas sur mysql...
    http://www.developpez.net/forums/sho...d.php?t=521074

  11. #11
    Membre éprouvé Avatar de Kurdran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 122
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    C'est dans la norme SQL ANSI...
    Sous Oracle il faut utiliser la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROW_NUMBER() OVER(PARTITION BY A ORDER BY S1, S2)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/11/2011, 18h03
  2. Afficher les lignes par groupe en excel avec vb.net
    Par malakrouhhi dans le forum VB.NET
    Réponses: 4
    Dernier message: 12/01/2010, 18h47
  3. [Shell] Regrouper les lignes par groupe de trois
    Par bazouil29 dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 04/01/2008, 21h43
  4. [TRichEdit] Comment numéroter les lignes ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/03/2006, 15h43
  5. Trier les fichiers par type et les afficher par groupe ...
    Par KneXtasY dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 18/09/2005, 18h50

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