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 habitué 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
    Points : 140
    Points
    140
    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 émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    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 habitué 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
    Points : 140
    Points
    140
    Par défaut
    Merci pour votre réponse, je vais l'essayer et je vous tiens au courant.

  4. #4
    Membre actif
    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
    Points : 213
    Points
    213
    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 874
    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 874
    Points : 53 048
    Points
    53 048
    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 +

  6. #6
    Membre habitué 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
    Points : 140
    Points
    140
    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 habitué 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
    Points : 140
    Points
    140
    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 émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    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 102
    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 102
    Points : 28 392
    Points
    28 392
    Par défaut
    C'est dans la norme SQL ANSI...

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

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    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 habitué 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
    Points : 140
    Points
    140
    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