PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > Comment faire un select de numéro incrémenté
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Comment faire un select de numéro incrémenté

Réponse
 
LinkBack Outils de la discussion
Vieux 06/10/2008, 16h11   #1
Test recherche
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Comment faire un select de numéro incrémenté

Bonjour,
J'ai un petit dilème à résoudre,
J'ai une valeur de type int à insérer dans une table en fonction d'un
identifiant
Ex pour un identifiant j'ai disons 200 références, j'ai un index de ces
références
cet Index va de 1 à 200
J'aimerai en une seule instruction effectuer ces inserts
Quelque chose du style
Insert MaTable
(
id,
index
)
Select @l_id
index
........

Bien sur je pourrais utiliser un while ou un curseur pour les inséré un par
un, mais ce n'est pas l'idée
Au fait je suis sous SQL Server 2005 SP2 sous windows 2003 server
Merci d'avance
Cordialement Stéphane


  Réponse avec citation
Vieux 06/10/2008, 18h42   #2
Nicolas SOUQUET
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

Bonjour,

Vous pouvez aussi écrire

SELECT IDENTITY(INT, 1, 1), mesColonnes
INTO maTableCible
FROM maTableSource

sous les versions 2000 et 2005 de SQL Server
  Réponse avec citation
Vieux 06/10/2008, 21h42   #3
Yann L'ARVOR
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

Bonsoir,

Je pense que la solution élégante a été proposé par sql pro dans sa série de
probléme sur developpez.com, pour résoudre un de ces problèmes où l'on
demande de compter les lignes d'une table, la solution la plus simple sous
sql serveur 2005 est l'utilisation des fonctions de ranking.

la solution de l'exercice :

http://blog.developpez.com/ylarvor?t..._7_le_comptage

Il vous suffit de faire une sélection sur la fenêtre de vos données et
d'utiliser row_number pour incrémenter votre select. Je pense que cela doit
marcher. Si vous n'y arriver pas, je vous propose de poster une table
exemple et quelques insertions pour que j'écrive ma solution.

Bonne chance.

Yann.


"Nicolas SOUQUET" <Nicolas SOUQUET@discussions.microsoft.com> a écrit dans
le message de news: 46153B76-727A-499E-8063-10F33A97C9FC@microsoft.com...
> Bonjour,
>
> Vous pouvez aussi écrire
>
> SELECT IDENTITY(INT, 1, 1), mesColonnes
> INTO maTableCible
> FROM maTableSource
>
> sous les versions 2000 et 2005 de SQL Server



  Réponse avec citation
Vieux 07/10/2008, 11h04   #4
Test recherche
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

Boujour,
Tout d'abord merci à tous
Je réalise que je me suis mal fait comprendre
Ma table est vide
Elle à x champs, un idenfiant fixe, un index et d'autre infos
Ce que j'aimerait faire c'est un insert de ce style
Insert MaTable
(
id,
index,
....
)
Select .............

Le select renverrai un jeu d'enregistrement de ce style, sachant que j'ai le
nombre d'enregistrements que j'aimerai avoir
@l_Id, 1
@l_Id, 2
@l_Id, 3
@l_Id, 4
@l_Id, 5
.........

En fait mon problème est que je n'ai pas de table sur lequel effectué le
select

Merci d'avance
Cordialement
Stéphane



"Yann L'ARVOR" <yann.larvor@orange.fr> a écrit dans le message de news:
48ea6a16$0$947$ba4acef3@news.orange.fr...
> Bonsoir,
>
> Je pense que la solution élégante a été proposé par sql pro dans sa série
> de probléme sur developpez.com, pour résoudre un de ces problèmes où l'on
> demande de compter les lignes d'une table, la solution la plus simple sous
> sql serveur 2005 est l'utilisation des fonctions de ranking.
>
> la solution de l'exercice :
>
> http://blog.developpez.com/ylarvor?t..._7_le_comptage
>
> Il vous suffit de faire une sélection sur la fenêtre de vos données et
> d'utiliser row_number pour incrémenter votre select. Je pense que cela
> doit marcher. Si vous n'y arriver pas, je vous propose de poster une table
> exemple et quelques insertions pour que j'écrive ma solution.
>
> Bonne chance.
>
> Yann.
>
>
> "Nicolas SOUQUET" <Nicolas SOUQUET@discussions.microsoft.com> a écrit dans
> le message de news: 46153B76-727A-499E-8063-10F33A97C9FC@microsoft.com...
>> Bonjour,
>>
>> Vous pouvez aussi écrire
>>
>> SELECT IDENTITY(INT, 1, 1), mesColonnes
>> INTO maTableCible
>> FROM maTableSource
>>
>> sous les versions 2000 et 2005 de SQL Server

>
>



  Réponse avec citation
Vieux 07/10/2008, 18h27   #5
Yann L'ARVOR
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut CTE & récursivité.

Bonjour,

Si vous souhaitez que j'écrives la requête, postez un exemple de table avec
un script d'insertion pour que je vous fasse le travail mais la solution est
la suivante, si vous n'avez pas de ligne et que vous souhaitez les créer
avant de les importer, une seule solution sur sql serveur 2005, les CTE et
un process récursif, comme dans le post suivant :
http://blog.developpez.com/ylarvor?t...ncours_sql_pro


"Test recherche" <Test@Test.fr> a écrit dans le message de news:
gcevpp$od5$1@s1.news.oleane.net...
> Boujour,
> Tout d'abord merci à tous
> Je réalise que je me suis mal fait comprendre
> Ma table est vide
> Elle à x champs, un idenfiant fixe, un index et d'autre infos
> Ce que j'aimerait faire c'est un insert de ce style
> Insert MaTable
> (
> id,
> index,
> ....
> )
> Select .............
>
> Le select renverrai un jeu d'enregistrement de ce style, sachant que j'ai
> le nombre d'enregistrements que j'aimerai avoir
> @l_Id, 1
> @l_Id, 2
> @l_Id, 3
> @l_Id, 4
> @l_Id, 5
> ........
>
> En fait mon problème est que je n'ai pas de table sur lequel effectué le
> select
>
> Merci d'avance
> Cordialement
> Stéphane
>
>
>
> "Yann L'ARVOR" <yann.larvor@orange.fr> a écrit dans le message de news:
> 48ea6a16$0$947$ba4acef3@news.orange.fr...
>> Bonsoir,
>>
>> Je pense que la solution élégante a été proposé par sql pro dans sa série
>> de probléme sur developpez.com, pour résoudre un de ces problèmes où l'on
>> demande de compter les lignes d'une table, la solution la plus simple
>> sous sql serveur 2005 est l'utilisation des fonctions de ranking.
>>
>> la solution de l'exercice :
>>
>> http://blog.developpez.com/ylarvor?t..._7_le_comptage
>>
>> Il vous suffit de faire une sélection sur la fenêtre de vos données et
>> d'utiliser row_number pour incrémenter votre select. Je pense que cela
>> doit marcher. Si vous n'y arriver pas, je vous propose de poster une
>> table exemple et quelques insertions pour que j'écrive ma solution.
>>
>> Bonne chance.
>>
>> Yann.
>>
>>
>> "Nicolas SOUQUET" <Nicolas SOUQUET@discussions.microsoft.com> a écrit
>> dans le message de news:
>> 46153B76-727A-499E-8063-10F33A97C9FC@microsoft.com...
>>> Bonjour,
>>>
>>> Vous pouvez aussi écrire
>>>
>>> SELECT IDENTITY(INT, 1, 1), mesColonnes
>>> INTO maTableCible
>>> FROM maTableSource
>>>
>>> sous les versions 2000 et 2005 de SQL Server

>>
>>

>
>



  Réponse avec citation
Vieux 08/10/2008, 09h15   #6
bruno reiter
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

Il faut faire une boucle WHILE, c'est le plus simple.

BR

"Test recherche" <Test@Test.fr> wrote in message
news:gccteg$2nu$1@s1.news.oleane.net...
> Bonjour,
> J'ai un petit dilème à résoudre,
> J'ai une valeur de type int à insérer dans une table en fonction d'un
> identifiant
> Ex pour un identifiant j'ai disons 200 références, j'ai un index de ces
> références
> cet Index va de 1 à 200
> J'aimerai en une seule instruction effectuer ces inserts
> Quelque chose du style
> Insert MaTable
> (
> id,
> index
> )
> Select @l_id
> index
> .......
>
> Bien sur je pourrais utiliser un while ou un curseur pour les inséré un
> par un, mais ce n'est pas l'idée
> Au fait je suis sous SQL Server 2005 SP2 sous windows 2003 server
> Merci d'avance
> Cordialement Stéphane
>


  Réponse avec citation
Vieux 09/10/2008, 13h46   #7
Leon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

tu peu essayer la requête ci-dessous par contre les champs de la table seront
à mettre à jour à un moment donnée. je ne sais pas si cela répond à tes
attentes ?

INSERT MATABLE(Id, INDEX )
SELECT
TOP 200
ROW_NUMBER() OVER(ORDER BY OBJECT_ID) AS Id,
'index_a_remplacer' As [Index]
FROM
SYS.COLUMNS

"Test recherche" a écrit :

> Boujour,
> Tout d'abord merci à tous
> Je réalise que je me suis mal fait comprendre
> Ma table est vide
> Elle à x champs, un idenfiant fixe, un index et d'autre infos
> Ce que j'aimerait faire c'est un insert de ce style
> Insert MaTable
> (
> id,
> index,
> ....
> )
> Select .............
>
> Le select renverrai un jeu d'enregistrement de ce style, sachant que j'ai le
> nombre d'enregistrements que j'aimerai avoir
> @l_Id, 1
> @l_Id, 2
> @l_Id, 3
> @l_Id, 4
> @l_Id, 5
> .........
>
> En fait mon problème est que je n'ai pas de table sur lequel effectué le
> select
>
> Merci d'avance
> Cordialement
> Stéphane
>
>
>
> "Yann L'ARVOR" <yann.larvor@orange.fr> a écrit dans le message de news:
> 48ea6a16$0$947$ba4acef3@news.orange.fr...
> > Bonsoir,
> >
> > Je pense que la solution élégante a été proposé par sql pro dans sa série
> > de probléme sur developpez.com, pour résoudre un de ces problèmes où l'on
> > demande de compter les lignes d'une table, la solution la plus simple sous
> > sql serveur 2005 est l'utilisation des fonctions de ranking.
> >
> > la solution de l'exercice :
> >
> > http://blog.developpez.com/ylarvor?t..._7_le_comptage
> >
> > Il vous suffit de faire une sélection sur la fenêtre de vos données et
> > d'utiliser row_number pour incrémenter votre select. Je pense que cela
> > doit marcher. Si vous n'y arriver pas, je vous propose de poster une table
> > exemple et quelques insertions pour que j'écrive ma solution.
> >
> > Bonne chance.
> >
> > Yann.
> >
> >
> > "Nicolas SOUQUET" <Nicolas SOUQUET@discussions.microsoft.com> a écrit dans
> > le message de news: 46153B76-727A-499E-8063-10F33A97C9FC@microsoft.com...
> >> Bonjour,
> >>
> >> Vous pouvez aussi écrire
> >>
> >> SELECT IDENTITY(INT, 1, 1), mesColonnes
> >> INTO maTableCible
> >> FROM maTableSource
> >>
> >> sous les versions 2000 et 2005 de SQL Server

> >
> >

>
>
>

  Réponse avec citation
Vieux 21/10/2008, 22h34   #8
Nicolas SOUQUET
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

Plus simple peut-être, moins rapide, probablement ...

"bruno reiter" wrote:

> Il faut faire une boucle WHILE, c'est le plus simple.
>
> BR
>
> "Test recherche" <Test@Test.fr> wrote in message
> news:gccteg$2nu$1@s1.news.oleane.net...
> > Bonjour,
> > J'ai un petit dilème à résoudre,
> > J'ai une valeur de type int à insérer dans une table en fonction d'un
> > identifiant
> > Ex pour un identifiant j'ai disons 200 références, j'ai un index de ces
> > références
> > cet Index va de 1 Ã 200
> > J'aimerai en une seule instruction effectuer ces inserts
> > Quelque chose du style
> > Insert MaTable
> > (
> > id,
> > index
> > )
> > Select @l_id
> > index
> > .......
> >
> > Bien sur je pourrais utiliser un while ou un curseur pour les inséré un
> > par un, mais ce n'est pas l'idée
> > Au fait je suis sous SQL Server 2005 SP2 sous windows 2003 server
> > Merci d'avance
> > Cordialement Stéphane
> >

>
>

  Réponse avec citation
Vieux 22/10/2008, 16h03   #9
bruno reiter
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Comment faire un select de numéro incrémenté

moins rapide que quoi?
si on ne sait pas d'où viennent les valeurs à insérer (d'une table ou
ailleurs).
ni où on les met (dans une table existante ou non).

BR

"Nicolas SOUQUET" <NicolasSOUQUET@discussions.microsoft.com> wrote in
message news:BE55CE93-0E9D-4162-869D-F57AC7F56751@microsoft.com...
> Plus simple peut-être, moins rapide, probablement ...
>
> "bruno reiter" wrote:
>
>> Il faut faire une boucle WHILE, c'est le plus simple.
>>
>> BR
>>
>> "Test recherche" <Test@Test.fr> wrote in message
>> news:gccteg$2nu$1@s1.news.oleane.net...
>> > Bonjour,
>> > J'ai un petit dilème à résoudre,
>> > J'ai une valeur de type int à insérer dans une table en fonction d'un
>> > identifiant
>> > Ex pour un identifiant j'ai disons 200 références, j'ai un index de ces
>> > références
>> > cet Index va de 1 Ã 200
>> > J'aimerai en une seule instruction effectuer ces inserts
>> > Quelque chose du style
>> > Insert MaTable
>> > (
>> > id,
>> > index
>> > )
>> > Select @l_id
>> > index
>> > .......
>> >
>> > Bien sur je pourrais utiliser un while ou un curseur pour les inséré un
>> > par un, mais ce n'est pas l'idée
>> > Au fait je suis sous SQL Server 2005 SP2 sous windows 2003 server
>> > Merci d'avance
>> > Cordialement Stéphane
>> >

>>
>>


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 06h46.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,17268 seconds with 17 queries