Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment faire un select de numéro incrémenté

8 réponses
Avatar
Test recherche
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

8 réponses

Avatar
Nicolas SOUQUET
Bonjour,

Vous pouvez aussi écrire

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

sous les versions 2000 et 2005 de SQL Server
Avatar
Yann L'ARVOR
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?title=sql_probleme_nd_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 a écrit dans
le message de news:
Bonjour,

Vous pouvez aussi écrire

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

sous les versions 2000 et 2005 de SQL Server


Avatar
Test recherche
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" a écrit dans le message de news:
48ea6a16$0$947$
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?title=sql_probleme_nd_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 a écrit dans
le message de news:
Bonjour,

Vous pouvez aussi écrire

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

sous les versions 2000 et 2005 de SQL Server






Avatar
Yann L'ARVOR
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?title=sql_concours_sql_pro


"Test recherche" a écrit dans le message de news:
gcevpp$od5$
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" a écrit dans le message de news:
48ea6a16$0$947$
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?title=sql_probleme_nd_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 a écrit
dans le message de news:

Bonjour,

Vous pouvez aussi écrire

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

sous les versions 2000 et 2005 de SQL Server










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

BR

"Test recherche" wrote in message
news:gccteg$2nu$
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



Avatar
Leon
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" a écrit dans le message de news:
48ea6a16$0$947$
> 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?title=sql_probleme_nd_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 a écrit dans
> le message de news:
>> Bonjour,
>>
>> Vous pouvez aussi écrire
>>
>> SELECT IDENTITY(INT, 1, 1), mesColonnes
>> INTO maTableCible
>> FROM maTableSource
>>
>> sous les versions 2000 et 2005 de SQL Server
>
>





Avatar
Nicolas SOUQUET
Plus simple peut-être, moins rapide, probablement ...

"bruno reiter" wrote:

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

BR

"Test recherche" wrote in message
news:gccteg$2nu$
> 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
>




Avatar
bruno reiter
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" wrote in
message news:
Plus simple peut-être, moins rapide, probablement ...

"bruno reiter" wrote:

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

BR

"Test recherche" wrote in message
news:gccteg$2nu$
> 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
>