Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Le plus simple serait sans doute de créer une table de nombres et de faire une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une ligne par instance d'article. Si non, il faudrait sans doute gérer alors de toute façon explictement chaque instance d'article).
-- Patrice
"Jean-Paul" a écrit dans le message de news:
Bonjour
Je m'explique
J'ai une vue qui me renvoie ceci
<Ref Art>, <Qte> donc par exemple 19992222GH, 7 1999456zGX, 4 19456722GY, 2
mais en fait j'aimerais obtenir la chose suivant : 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 19456722GY, 2 19456722GY, 2
Connaissez vous un moyen simple dans une requete SQL ? Sans passer par une table intermediaire.
Le plus simple serait sans doute de créer une table de nombres et de faire
une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs
données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une
ligne par instance d'article. Si non, il faudrait sans doute gérer alors de
toute façon explictement chaque instance d'article).
--
Patrice
"Jean-Paul" <jean-paul.tauziede@parthena.com> a écrit dans le message de
news: 73AB3A11-E0C5-4539-A9D4-7B04BCD318FC@microsoft.com...
Bonjour
Je m'explique
J'ai une vue qui me renvoie ceci
<Ref Art>, <Qte>
donc par exemple
19992222GH, 7
1999456zGX, 4
19456722GY, 2
mais en fait j'aimerais obtenir la chose suivant :
19992222GH, 7
19992222GH, 7
19992222GH, 7
19992222GH, 7
19992222GH, 7
19992222GH, 7
19992222GH, 7
1999456zGX, 4
1999456zGX, 4
1999456zGX, 4
1999456zGX, 4
1999456zGX, 4
19456722GY, 2
19456722GY, 2
Connaissez vous un moyen simple dans une requete SQL ?
Sans passer par une table intermediaire.
Le plus simple serait sans doute de créer une table de nombres et de faire une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une ligne par instance d'article. Si non, il faudrait sans doute gérer alors de toute façon explictement chaque instance d'article).
-- Patrice
"Jean-Paul" a écrit dans le message de news:
Bonjour
Je m'explique
J'ai une vue qui me renvoie ceci
<Ref Art>, <Qte> donc par exemple 19992222GH, 7 1999456zGX, 4 19456722GY, 2
mais en fait j'aimerais obtenir la chose suivant : 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 19992222GH, 7 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 1999456zGX, 4 19456722GY, 2 19456722GY, 2
Connaissez vous un moyen simple dans une requete SQL ? Sans passer par une table intermediaire.
Christian Robert
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId) WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE AS RETURN WITH L0 AS(SELECT 1 AS c UNION ALL SELECT 1), L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B), L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B), L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B), L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B), L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B), Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5) SELECT n FROM Nums WHERE n <= @n; GO
Voilà
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
Le plus simple serait sans doute de créer une table de nombres et de faire une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une ligne par instance d'article. Si non, il faudrait sans doute gérer alors de toute façon explictement chaque instance d'article).
-- Patrice
"Jean-Paul" a écrit dans le message de news: > Bonjour > > Je m'explique > > J'ai une vue qui me renvoie ceci > > <Ref Art>, <Qte> > donc par exemple > 19992222GH, 7 > 1999456zGX, 4 > 19456722GY, 2 > > mais en fait j'aimerais obtenir la chose suivant : > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 19456722GY, 2 > 19456722GY, 2 > > Connaissez vous un moyen simple dans une requete SQL ? > Sans passer par une table intermediaire.
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle
nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num
WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId)
WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n <= @n;
GO
Voilà
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
Le plus simple serait sans doute de créer une table de nombres et de faire
une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs
données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une
ligne par instance d'article. Si non, il faudrait sans doute gérer alors de
toute façon explictement chaque instance d'article).
--
Patrice
"Jean-Paul" <jean-paul.tauziede@parthena.com> a écrit dans le message de
news: 73AB3A11-E0C5-4539-A9D4-7B04BCD318FC@microsoft.com...
> Bonjour
>
> Je m'explique
>
> J'ai une vue qui me renvoie ceci
>
> <Ref Art>, <Qte>
> donc par exemple
> 19992222GH, 7
> 1999456zGX, 4
> 19456722GY, 2
>
> mais en fait j'aimerais obtenir la chose suivant :
> 19992222GH, 7
> 19992222GH, 7
> 19992222GH, 7
> 19992222GH, 7
> 19992222GH, 7
> 19992222GH, 7
> 19992222GH, 7
> 1999456zGX, 4
> 1999456zGX, 4
> 1999456zGX, 4
> 1999456zGX, 4
> 1999456zGX, 4
> 19456722GY, 2
> 19456722GY, 2
>
> Connaissez vous un moyen simple dans une requete SQL ?
> Sans passer par une table intermediaire.
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId) WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE AS RETURN WITH L0 AS(SELECT 1 AS c UNION ALL SELECT 1), L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B), L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B), L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B), L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B), L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B), Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5) SELECT n FROM Nums WHERE n <= @n; GO
Voilà
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
Le plus simple serait sans doute de créer une table de nombres et de faire une jointure. Quelqu'un aura peut-être une autre idée ?
Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une ligne par instance d'article. Si non, il faudrait sans doute gérer alors de toute façon explictement chaque instance d'article).
-- Patrice
"Jean-Paul" a écrit dans le message de news: > Bonjour > > Je m'explique > > J'ai une vue qui me renvoie ceci > > <Ref Art>, <Qte> > donc par exemple > 19992222GH, 7 > 1999456zGX, 4 > 19456722GY, 2 > > mais en fait j'aimerais obtenir la chose suivant : > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 19992222GH, 7 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 1999456zGX, 4 > 19456722GY, 2 > 19456722GY, 2 > > Connaissez vous un moyen simple dans une requete SQL ? > Sans passer par une table intermediaire.
Jean-Paul
Merci de la réponse
Pour répondre à ta question Patrice, les enregistrements sont identiques mais c'est fait exprés. C'est pour imprimer dans un état crystal des codes barres et il m'en faut autant que les quantités de mes articles avec même une valeur en % gérant un surplus. Quant à la table des nombres c'est la solution que j'ai utilisée. Mais la table est figée et cela me génait même je suis allé jusqu'à 2000 soit 2.000.100 lignes !...
Pour la table
"Christian Robert" a écrit :
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId) WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE AS RETURN WITH L0 AS(SELECT 1 AS c UNION ALL SELECT 1), L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B), L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B), L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B), L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B), L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B), Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5) SELECT n FROM Nums WHERE n <= @n; GO
Voilà
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
> Le plus simple serait sans doute de créer une table de nombres et de faire > une jointure. Quelqu'un aura peut-être une autre idée ? > > Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs > données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une > ligne par instance d'article. Si non, il faudrait sans doute gérer alors de > toute façon explictement chaque instance d'article). > > -- > Patrice > > "Jean-Paul" a écrit dans le message de > news: > > Bonjour > > > > Je m'explique > > > > J'ai une vue qui me renvoie ceci > > > > <Ref Art>, <Qte> > > donc par exemple > > 19992222GH, 7 > > 1999456zGX, 4 > > 19456722GY, 2 > > > > mais en fait j'aimerais obtenir la chose suivant : > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 19456722GY, 2 > > 19456722GY, 2 > > > > Connaissez vous un moyen simple dans une requete SQL ? > > Sans passer par une table intermediaire. > > >
Merci de la réponse
Pour répondre à ta question Patrice, les enregistrements sont
identiques mais c'est fait exprés. C'est pour imprimer dans un
état crystal des codes barres et il m'en faut autant que les quantités
de mes articles avec même une valeur en % gérant un surplus.
Quant à la table des nombres c'est la solution que j'ai utilisée.
Mais la table est figée et cela me génait même je suis allé jusqu'à
2000 soit 2.000.100 lignes !...
Pour la table
"Christian Robert" a écrit :
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle
nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num
WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId)
WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n <= @n;
GO
Voilà
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
> Le plus simple serait sans doute de créer une table de nombres et de faire
> une jointure. Quelqu'un aura peut-être une autre idée ?
>
> Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs
> données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une
> ligne par instance d'article. Si non, il faudrait sans doute gérer alors de
> toute façon explictement chaque instance d'article).
>
> --
> Patrice
>
> "Jean-Paul" <jean-paul.tauziede@parthena.com> a écrit dans le message de
> news: 73AB3A11-E0C5-4539-A9D4-7B04BCD318FC@microsoft.com...
> > Bonjour
> >
> > Je m'explique
> >
> > J'ai une vue qui me renvoie ceci
> >
> > <Ref Art>, <Qte>
> > donc par exemple
> > 19992222GH, 7
> > 1999456zGX, 4
> > 19456722GY, 2
> >
> > mais en fait j'aimerais obtenir la chose suivant :
> > 19992222GH, 7
> > 19992222GH, 7
> > 19992222GH, 7
> > 19992222GH, 7
> > 19992222GH, 7
> > 19992222GH, 7
> > 19992222GH, 7
> > 1999456zGX, 4
> > 1999456zGX, 4
> > 1999456zGX, 4
> > 1999456zGX, 4
> > 1999456zGX, 4
> > 19456722GY, 2
> > 19456722GY, 2
> >
> > Connaissez vous un moyen simple dans une requete SQL ?
> > Sans passer par une table intermediaire.
>
>
>
Pour répondre à ta question Patrice, les enregistrements sont identiques mais c'est fait exprés. C'est pour imprimer dans un état crystal des codes barres et il m'en faut autant que les quantités de mes articles avec même une valeur en % gérant un surplus. Quant à la table des nombres c'est la solution que j'ai utilisée. Mais la table est figée et cela me génait même je suis allé jusqu'à 2000 soit 2.000.100 lignes !...
Pour la table
"Christian Robert" a écrit :
J'ai prix l'emple sur AdventureWorks sur SQL 2005.
Effectivement la table de nombre peut être très utile, ma table s'appelle nums et son champ unique num :
SELECT * FROM Person.Contact JOIN nums ON ContactId >= nums.num WHERE ContactId <= 10
dans ce cas sinon sur SQL Server 2005 avec une fonction et CROSS APPLY
SELECT * FROM Person.Contact CROSS APPLY fn_nums(ContactId) WHERE ContactId <= 10
et la définition de fn_nums:
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE AS RETURN WITH L0 AS(SELECT 1 AS c UNION ALL SELECT 1), L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B), L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B), L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B), L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B), L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B), Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5) SELECT n FROM Nums WHERE n <= @n; GO
Voilà
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Patrice" a écrit :
> Le plus simple serait sans doute de créer une table de nombres et de faire > une jointure. Quelqu'un aura peut-être une autre idée ? > > Quel est l'objectif final ? (toutes les lignes auront toujours toutes leurs > données identiques ? Si oui, je ne vois pas trop l'avantage d'avoir une > ligne par instance d'article. Si non, il faudrait sans doute gérer alors de > toute façon explictement chaque instance d'article). > > -- > Patrice > > "Jean-Paul" a écrit dans le message de > news: > > Bonjour > > > > Je m'explique > > > > J'ai une vue qui me renvoie ceci > > > > <Ref Art>, <Qte> > > donc par exemple > > 19992222GH, 7 > > 1999456zGX, 4 > > 19456722GY, 2 > > > > mais en fait j'aimerais obtenir la chose suivant : > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 19992222GH, 7 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 1999456zGX, 4 > > 19456722GY, 2 > > 19456722GY, 2 > > > > Connaissez vous un moyen simple dans une requete SQL ? > > Sans passer par une table intermediaire. > > >