Combinatoria de campos....

05/08/2008 - 19:43 por Gijon | Informe spam
Hola Grupo...
Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y Codigo.
Nivel | Codigo
1 | 01
1 | 02
2 | xx
2 | yy

Lo que necesito es alguna consulta o procedimeinto almacenado para que a
partir de la tabla anterior me regrese una conbinacion de los elementos del
nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:

01xx
01yy
02xx
02yy

Otro ejemplo con mas niveles:

Nivel | Codigo
1 | 01
1 | 02
2 | xx
2 | yy
3 | zz
3 | ww

el Resultado seria:

01xxzz
01xxww

01yyzz
01yyww

02xxzz
02xxww

02yyzz
02yyww


Como veran son combinatorias entre los niveles de n en m. alguna
sugenrencia???


Gracias

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
05/08/2008 - 19:56 | Informe spam
No se me ocurre una solución ahora, pero seré curioso: para qué necesita
usted ese tipo de consulta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gijon" wrote:

Hola Grupo...
Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y Codigo.
Nivel | Codigo
1 | 01
1 | 02
2 | xx
2 | yy

Lo que necesito es alguna consulta o procedimeinto almacenado para que a
partir de la tabla anterior me regrese una conbinacion de los elementos del
nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:

01xx
01yy
02xx
02yy

Otro ejemplo con mas niveles:

Nivel | Codigo
1 | 01
1 | 02
2 | xx
2 | yy
3 | zz
3 | ww

el Resultado seria:

01xxzz
01xxww

01yyzz
01yyww

02xxzz
02xxww

02yyzz
02yyww


Como veran son combinatorias entre los niveles de n en m. alguna
sugenrencia???


Gracias


Respuesta Responder a este mensaje
#2 Gijon
05/08/2008 - 20:20 | Informe spam
Gracias por tu interes. La consulta la necesito para generar codigos de
articulos automaticamente. Es para una base de datos para inventarios y
ventas.

La idea es que en base a los niveles definidos en una tabla cada que un
usuario defina un nuevo nivel entonces mediante un Trigger SQL generará
automáticamente en una tabla temporal todos los posibles articulos
(combinaciones) para vender, despues mediante otro proceso solo se activarán
los deseados. La idea es que mediante esa consulta se sugiera todas las
alternativas posibles.


Esta complicado verdad...? :(
"Gustavo Larriera (MVP)" wrote:

No se me ocurre una solución ahora, pero seré curioso: para qué necesita
usted ese tipo de consulta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gijon" wrote:

> Hola Grupo...
> Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y Codigo.
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
>
> Lo que necesito es alguna consulta o procedimeinto almacenado para que a
> partir de la tabla anterior me regrese una conbinacion de los elementos del
> nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:
>
> 01xx
> 01yy
> 02xx
> 02yy
>
> Otro ejemplo con mas niveles:
>
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
> 3 | zz
> 3 | ww
>
> el Resultado seria:
>
> 01xxzz
> 01xxww
>
> 01yyzz
> 01yyww
>
> 02xxzz
> 02xxww
>
> 02yyzz
> 02yyww
>
>
> Como veran son combinatorias entre los niveles de n en m. alguna
> sugenrencia???
>
>
> Gracias
>
>
Respuesta Responder a este mensaje
#3 Gustavo Larriera (MVP)
05/08/2008 - 20:25 | Informe spam
Es una idea algo loca, por lo tanto bien interesante :-)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gijon" wrote:

Gracias por tu interes. La consulta la necesito para generar codigos de
articulos automaticamente. Es para una base de datos para inventarios y
ventas.

La idea es que en base a los niveles definidos en una tabla cada que un
usuario defina un nuevo nivel entonces mediante un Trigger SQL generará
automáticamente en una tabla temporal todos los posibles articulos
(combinaciones) para vender, despues mediante otro proceso solo se activarán
los deseados. La idea es que mediante esa consulta se sugiera todas las
alternativas posibles.


Esta complicado verdad...? :(
"Gustavo Larriera (MVP)" wrote:

> No se me ocurre una solución ahora, pero seré curioso: para qué necesita
> usted ese tipo de consulta?
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Gijon" wrote:
>
> > Hola Grupo...
> > Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y Codigo.
> > Nivel | Codigo
> > 1 | 01
> > 1 | 02
> > 2 | xx
> > 2 | yy
> >
> > Lo que necesito es alguna consulta o procedimeinto almacenado para que a
> > partir de la tabla anterior me regrese una conbinacion de los elementos del
> > nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:
> >
> > 01xx
> > 01yy
> > 02xx
> > 02yy
> >
> > Otro ejemplo con mas niveles:
> >
> > Nivel | Codigo
> > 1 | 01
> > 1 | 02
> > 2 | xx
> > 2 | yy
> > 3 | zz
> > 3 | ww
> >
> > el Resultado seria:
> >
> > 01xxzz
> > 01xxww
> >
> > 01yyzz
> > 01yyww
> >
> > 02xxzz
> > 02xxww
> >
> > 02yyzz
> > 02yyww
> >
> >
> > Como veran son combinatorias entre los niveles de n en m. alguna
> > sugenrencia???
> >
> >
> > Gracias
> >
> >
Respuesta Responder a este mensaje
#4 jcac
05/08/2008 - 22:13 | Informe spam
Hola Gijon,

Quizás esto te pueda ayudar.

create table #tmp1(
nivel int,
codigo varchar(20))
go
insert into #tmp1
select 1, '01'
union
select 1, '02'
union
select 2, 'xx'
union
select 2, 'yy'
union
select 3, 'zz'
union
select 3, 'ww'
go
create table #tmpr1(campo varchar(100))
create table #tmpr2(campo varchar(100))
go
declare @nivelmax int
select @nivelmax = max(nivel) from #tmp1
insert into #tmpr1
select codigo from #tmp1 where nivel = @nivelmax
while @nivelmax > 1
begin
insert into #tmpr2
select t1.codigo + t2.campo
from #tmp1 t1, #tmpr1 t2
where t1.nivel = @nivelmax - 1
delete #tmpr1
insert into #tmpr1
delete #tmpr2
set @nivelmax = @nivelmax -1
continue
end
go
select * from #tmpr1
go
drop table #tmpr2
drop table #tmpr1
drop table #tmp1
go

Saludos

Juan Carlos



"Gijon" escribió en el mensaje
news:
Gracias por tu interes. La consulta la necesito para generar codigos de
articulos automaticamente. Es para una base de datos para inventarios y
ventas.

La idea es que en base a los niveles definidos en una tabla cada que un
usuario defina un nuevo nivel entonces mediante un Trigger SQL generará
automáticamente en una tabla temporal todos los posibles articulos
(combinaciones) para vender, despues mediante otro proceso solo se
activarán
los deseados. La idea es que mediante esa consulta se sugiera todas las
alternativas posibles.


Esta complicado verdad...? :(
"Gustavo Larriera (MVP)" wrote:

No se me ocurre una solución ahora, pero seré curioso: para qué necesita
usted ese tipo de consulta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gijon" wrote:

> Hola Grupo...
> Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y
> Codigo.
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
>
> Lo que necesito es alguna consulta o procedimeinto almacenado para que
> a
> partir de la tabla anterior me regrese una conbinacion de los elementos
> del
> nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:
>
> 01xx
> 01yy
> 02xx
> 02yy
>
> Otro ejemplo con mas niveles:
>
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
> 3 | zz
> 3 | ww
>
> el Resultado seria:
>
> 01xxzz
> 01xxww
>
> 01yyzz
> 01yyww
>
> 02xxzz
> 02xxww
>
> 02yyzz
> 02yyww
>
>
> Como veran son combinatorias entre los niveles de n en m. alguna
> sugenrencia???
>
>
> Gracias
>
>
Respuesta Responder a este mensaje
#5 Jesús López
06/08/2008 - 13:54 | Informe spam
Para dos niveles:

SELECT N1.Codigo AS C1, N2.Codigo AS C2
FROM
(SELECT Codigo FROM Tabla WHERE Nivel = 1) N1
CROSS JOIN
(SELECT Codigo FROM Tabla WHERE Nivel = 2) N2


Para tres niveles:

SELECT N1.Codigo AS C1, N2.Codigo AS C2, N3.Codigo AS C3
FROM
(SELECT Codigo FROM Tabla WHERE Nivel = 1) N1
CROSS JOIN
(SELECT Codigo FROM Tabla WHERE Nivel = 2) N2
CROSS JOIN
(SELECT Codigo FROM Tabla WHERE Nivel = 3) N3


Etc.

Saludos:

Jesús López
www.solidq.com



"Gijon" escribió en el mensaje
news:
Gracias por tu interes. La consulta la necesito para generar codigos de
articulos automaticamente. Es para una base de datos para inventarios y
ventas.

La idea es que en base a los niveles definidos en una tabla cada que un
usuario defina un nuevo nivel entonces mediante un Trigger SQL generará
automáticamente en una tabla temporal todos los posibles articulos
(combinaciones) para vender, despues mediante otro proceso solo se
activarán
los deseados. La idea es que mediante esa consulta se sugiera todas las
alternativas posibles.


Esta complicado verdad...? :(
"Gustavo Larriera (MVP)" wrote:

No se me ocurre una solución ahora, pero seré curioso: para qué necesita
usted ese tipo de consulta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Gijon" wrote:

> Hola Grupo...
> Tengo una tabla la cual tiene dos campos importantes para mi: Nivel y
> Codigo.
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
>
> Lo que necesito es alguna consulta o procedimeinto almacenado para que
> a
> partir de la tabla anterior me regrese una conbinacion de los elementos
> del
> nivel 1 contra el nivel 2. de tal forma que lo obtenido sea:
>
> 01xx
> 01yy
> 02xx
> 02yy
>
> Otro ejemplo con mas niveles:
>
> Nivel | Codigo
> 1 | 01
> 1 | 02
> 2 | xx
> 2 | yy
> 3 | zz
> 3 | ww
>
> el Resultado seria:
>
> 01xxzz
> 01xxww
>
> 01yyzz
> 01yyww
>
> 02xxzz
> 02xxww
>
> 02yyzz
> 02yyww
>
>
> Como veran son combinatorias entre los niveles de n en m. alguna
> sugenrencia???
>
>
> Gracias
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida