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

MS SQL Server Discussion :

Select Avec Champ Autoincremente


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Select Avec Champ Autoincremente
    Bonjour,

    je suis à la recherche d'une méthode pour afficher un compteur pour chaque enregistrement dans le résultat de ma requête SELECT

    Exemple : SELECT "num enreg",champ1,champ2... FROM ma_table ORDER BY champ1

    Résultat désiré :

    1 valeur_champ1 valeur_champ2 ...
    2 valeur_champ1 valeur_champ2 ...
    3 valeur_champ1 valeur_champ2 ...
    4 valeur_champ1 valeur_champ2 ...
    ...

    Ce que je pourrai obtenir avec un SELECT IDENTITY(1,1) AS Compteur,champ1,champ2 ... INTO table_intermediaire FROM ma_table ORDER BY champ1
    puis SELECT * FROM table_intermediaire ORDER BY 1

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par susu69
    Ce que je pourrai obtenir avec un SELECT IDENTITY(1,1) AS Compteur,champ1,champ2 ... INTO table_intermediaire FROM ma_table ORDER BY champ1
    puis SELECT * FROM table_intermediaire ORDER BY 1

    Ca me parrait pas mal comme cela (à part que le SELECT ... INTO est à proscrire.

    Tu peux faire une transaction:
    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 #table_temporaire
    ...
     
    GO
     
    INSERT INTO #table_temporaire (champs)
    SELECT *
    FROM table
     
    GO
     
    SELECT *
    FROM #table_temporaire
    ORDER BY compteur
    Qu'est-ce qui t'empêche de faire ça ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Euh, l'utilisation d'une table temporaire simplement pour cela me semble légèrement exagéré au niveau des ressources.

    A-t-on regardé du côté d'un équivalent à ROWID d'Oracle ?

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par swirtel
    Euh, l'utilisation d'une table temporaire simplement pour cela me semble légèrement exagéré au niveau des ressources.
    Bien sûr, mais avec SQL Server, on fait ce qu'on peut avec ce qu'on a.

    Citation Envoyé par swirtel
    A-t-on regardé du côté d'un équivalent à ROWID d'Oracle ?
    J'ai trouvé ce document, qui donne des équivalents SQL Server de ce que l'on peut faire avec Oracle :
    http://vyaskn.tripod.com/oracle_sql_...quivalents.htm

    et qui propose un lien sur ce document:
    http://support.microsoft.com/default...;EN-US;q186133
    qui devrait répondre à la question.

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Et pour SQL Server 2005, il y a aussi ca:
    http://msdn2.microsoft.com/en-us/library/ms189798.aspx

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci pour vos réponses,

    grâce à vos liens je suis allé sur le support MS (côté french) et j'ai opté pour la solution suivante :
    équijointure sur la table avec condition ">" sur la clé primaire

    cela donne dans mon cas :

    SELECT
    count(*),A.CodeArticle
    FROM
    ARTICLE A
    JOIN ARTICLE B ON
    A.CodeArticle>B.CodeArticle
    GROUP BY
    A.CodeArticle
    ORDER BY
    A.CodeArticle


    PS : pourquoi le SELECT ... INTO est-il déconseillé ?

  7. #7
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par susu69
    PS : pourquoi le SELECT ... INTO est-il déconseillé ?
    C'est pas standard, et sur certains SGBD, le "INTO" à une autre signification. Bref, autant rester le plus standard possible (quand c'est possible, bien entendu !).

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par susu69
    grâce à vos liens je suis allé sur le support MS (côté french) et j'ai opté pour la solution suivante :
    équijointure sur la table avec condition ">" sur la clé primaire
    C'est pas un peu "lourd" comme solution par rapport à un ROW_NUMBER() ?

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

Discussions similaires

  1. requête SELECT avec champ de recordset
    Par matt41 dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/07/2012, 11h47
  2. Requête select avec champ max
    Par qltmi dans le forum Excel
    Réponses: 1
    Dernier message: 20/08/2008, 15h33
  3. INSERT à partir d'un SELECT avec champ SERIAL
    Par bruno.wiesen dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/03/2007, 11h07
  4. Requete Select avec champs differents
    Par jojob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/01/2007, 10h44
  5. [CR 8.5] filtrer avec l'expert selection un champs calculé!!
    Par abdel6908 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/06/2005, 10h30

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