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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas SOUQUET
Le #17438401
Bonjour,

Vous pouvez aussi écrire

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

sous les versions 2000 et 2005 de SQL Server
Yann L'ARVOR
Le #17440651
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" 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


Test recherche
Le #17444811
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" 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" 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






Yann L'ARVOR
Le #17449341
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" 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" 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" 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










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

BR

"Test recherche" 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



Leon
Le #17470641
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" 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" > 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
>
>





Nicolas SOUQUET
Le #17605051
Plus simple peut-être, moins rapide, probablement ...

"bruno reiter" wrote:

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

BR

"Test recherche" 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
>




bruno reiter
Le #17611061
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" 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" 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
>






Publicité
Poster une réponse
Anonyme