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

 PostgreSQL Discussion :

indice de ligne


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut indice de ligne
    * Bonjour, *

    Existe-t-il une commande postgresql qui permet d'avoir pou chaque ligne d'une requête l'indice de la ligne ?

    Par exemple la requête =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT dossard
    FROM vue_course_veteran
    renvoi le résultat =>

    5
    2
    3
    4

    Les chiffres sont les dossards, ils arrivent tous dans l'ordre d'arriver de la course ( le 5 est le premier quoi).
    J'aimerais avoir le numéro de la ligne correspondant à ces numéro.


    donner-ligne( 5 ) => 1

    En sachant que je ne veux/peux pas insérer de clé ,OID ou quoi que ce soit pour compter le nombres de lignes.

    je veux juste le numéro de la ligne correspondant à un champs qui est "unique" est-ce possible ?

    * Merci *

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Y a-t-il un champ sur lequel s'appuyer pour trier l'ordre de ces lignes (un ordre d'arrivée) ?
    Ce que vous voulez, c'est le couple dossard-ordre d'arrivée ?

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par maxiplay Voir le message
    je veux juste le numéro de la ligne correspondant à un champs qui est "unique" est-ce possible ?
    Oui en utilisant les fonctions de fenêtrage comme RANK(), DENSE_RANK() ou ROW_NUMBER. Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/article...clause-window/
    Mais il nous faut l'expression qui ordonnera ces rangs. Pr exemple si ce sont sur les temps de course :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *, RANK() OVER(ORDER BY COURSE_TEMP DESC) AS N
    FROM   ...
    ORDER BY N
    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/ * * * * *

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut over ne fonctionne pas
    Merci de vos réponses,

    ced dit:
    Y a-t-il un champ sur lequel s'appuyer pour trier l'ordre de ces lignes (un ordre d'arrivée) ?
    Ce que vous voulez, c'est le couple dossard-ordre d'arrivée ?
    Oui! il y a une table "arrivee" qui est construite comme ceci =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE arrivee
    (
      arrivee_dossard integer NOT NULL,
      arrivee_heure integer,
      arrivee_minute integer,
      arrivee_seconde integer,
      arrivee_centieme integer,
      arrivee_id serial NOT NULL,
      CONSTRAINT arrivee_pkey PRIMARY KEY (arrivee_id),
      CONSTRAINT arrivee_arrivee_dossard_fkey FOREIGN KEY (arrivee_dossard)
          REFERENCES inscription (inscription_dossard) MATCH FULL
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT arrivee_arrivee_dossard_key UNIQUE (arrivee_dossard)
    )

    arrivee_id est l'ordre d'arriver.Mon problème ici est que je ne souhaite pas donner le classement général du coureur mais son CLASSEMENT DANS SA CATEGORIE D'AGE !

    par exemple :

    NOM | PRENOM | classement | classement_de_categorie

    J'aurais aimé établir un classement des vétérans au sein même du classement général.

    Or sqlpro dit:

    Oui en utilisant les fonctions de fenêtrage comme RANK(), DENSE_RANK() ou ROW_NUMBER. Lisez l'article que j'ai écrit à ce sujet :
    Cela tombait pile poil !

    donc faire un RANK() en prenant comme critère la catégorie et le classement_general.

    malheureusement ,j'ai essayé de faire une requête simple =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SELECT  inscription.inscription_nom, inscription.inscription_prenom,RANK()    OVER(ORDER BY arrivee.arrivee_id DESC)
     
       FROM inscription, arrivee
      WHERE arrivee.arrivee_dossard= inscription.inscription_dossard


    et voila le CODE ERREUR que postgresql 8.4 me signal


    ERROR: syntax error at or near "OVER"
    LINE 1: ...iption_nom, inscription.inscription_prenom,RANK() OVER(ORDER...
    ^

    ********** Erreur **********

    ERROR: syntax error at or near "OVER"
    État SQL :42601
    Caractère : 77
    OVER NE FONCTIONNE PAS

    voila j'ai sans doute mal fait ma requête ou mal compris le principe du OVER j'aurais besoin de vos lumières.

    Merci, bonne journée

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Le message d'erreur laisse à penser que ce n'est pas postgresql 8.4, mais une version antérieure.
    Il faudrait faire pour vérifier.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut oupss
    re bonjour


    oui en effet c'est la version

    "PostgreSQL 8.3.13, compiled by Visual C++ build 1400"

    Je me renseigne si le OVER fonctionne sous cette version à moins que quelqu'un me le dise lol

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut pas à jour
    Bon ba ma version de postgres est trop ancienne pour couvrir le "OVER" .
    Le OVER est soutenue que à partir de la version 8.4.

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

Discussions similaires

  1. Problème indice de ligne avec fonction Large
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/07/2011, 14h49
  2. [Débutant] conserver dans un vecter des indices de lignes et colonnes d'une matrice
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 4
    Dernier message: 09/03/2010, 19h57
  3. [XL-2007] Récupérer l'indice de ligne d'une forme
    Par Gregs dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/04/2009, 21h11
  4. indicer les lignes d'un fichier texte
    Par cre31400 dans le forum C++
    Réponses: 18
    Dernier message: 17/07/2008, 16h08
  5. Recuperer l'indice de ligne d'une plage de cellules fusionnées
    Par jafarMUC dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2008, 14h07

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