|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Vous pouvez aussi écrire SELECT IDENTITY(INT, 1, 1), mesColonnes INTO maTableCible FROM maTableSource sous les versions 2000 et 2005 de SQL Server |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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 > > |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
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 >> >> > > |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
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 > |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
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 > > > > > > > |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
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 > > > > |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
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 >> > >> >> |
|
![]() |
| Outils de la discussion | |
|
|