No la pude realizar

17/10/2006 - 14:27 por Jiordie | Informe spam
Hola a todos!
Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
hacer, entonces por eso pregunto acá que es donde estan los expertos:

Tengo los siguientes conjuntos de datos:
Maestro Tipo Vinculada Empleado
Id Nombre IdTipo IdEmpleado Id Nombre
1 Tipo 1 1 1 1 Empleado 1
2 Tipo 2 2 1 2 Empleado 2
3 Tipo 3 1 2 3 Empleado 3
3 2 4 Empleado 4
1 3 5 Empleado 5
2 3 6 Empleado 6
4 3
1 4
2 4
1 5
2 5
3 5


Ahora bien, lo que quiero es que en una consulta pueda saber cuales
empleados tienen todos los Tipos,
es decir, que mi consulta final de debe arrojar lo siguiente
3 Empleado 3
5 Empleado 5

debido a que solo el Id de empleado 3 y 5 tienen todos los tipos, espero me
haya explicado bien, y que me puedan ayudar, igualmente agradezco a quien
lea el mensaje y me pueda ayudar

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
17/10/2006 - 15:23 | Informe spam
Jiordie,

Esta muy confusa la estructura y la data que posteastes. Crees que pudieras
postear la estructura y data de ejemplo usando DML?

create table

insert into ...


AMB


"Jiordie" wrote:

Hola a todos!
Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
hacer, entonces por eso pregunto acá que es donde estan los expertos:

Tengo los siguientes conjuntos de datos:
Maestro Tipo Vinculada Empleado
Id Nombre IdTipo IdEmpleado Id Nombre
1 Tipo 1 1 1 1 Empleado 1
2 Tipo 2 2 1 2 Empleado 2
3 Tipo 3 1 2 3 Empleado 3
3 2 4 Empleado 4
1 3 5 Empleado 5
2 3 6 Empleado 6
4 3
1 4
2 4
1 5
2 5
3 5


Ahora bien, lo que quiero es que en una consulta pueda saber cuales
empleados tienen todos los Tipos,
es decir, que mi consulta final de debe arrojar lo siguiente
3 Empleado 3
5 Empleado 5

debido a que solo el Id de empleado 3 y 5 tienen todos los tipos, espero me
haya explicado bien, y que me puedan ayudar, igualmente agradezco a quien
lea el mensaje y me pueda ayudar



Respuesta Responder a este mensaje
#2 Jiordie
17/10/2006 - 15:36 | Informe spam
te coloco la esctructura bien
Tabla de Tipos

Id Nombre
1 Tipo Uno
2 Tipo Dos
3 Tipo Tres

Tabla Vinculada

IdTipo IdEmpleado
1 1
2 1
1 2
3 2
1 3
2 3
3 3
1 4
3 4
1 5
2 5
3 5

Tabla de empleados

Id Nombre
1 Empleado Uno
2 Empleado Dos
3 Empleado Tres
4 Empleado Cuatro
5 Empleado Cinco

El conjunto resultante debe ser algo asi

3 Empleado Tres
5 Empleado Cinco

Solo los empleados 3 y 5 ya que son los únicos que tienen los tres tipo de
la tabla de tipos.

Espero que ahora este mas claro


"Alejandro Mesa" escribió en el
mensaje news:
Jiordie,

Esta muy confusa la estructura y la data que posteastes. Crees que
pudieras
postear la estructura y data de ejemplo usando DML?

create table

insert into ...


AMB


"Jiordie" wrote:

Hola a todos!
Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
hacer, entonces por eso pregunto acá que es donde estan los expertos:

Tengo los siguientes conjuntos de datos:
Maestro Tipo Vinculada Empleado
Id Nombre IdTipo IdEmpleado Id Nombre
1 Tipo 1 1 1 1 Empleado 1
2 Tipo 2 2 1 2 Empleado 2
3 Tipo 3 1 2 3 Empleado 3
3 2 4 Empleado 4
1 3 5 Empleado 5
2 3 6 Empleado 6
4 3
1 4
2 4
1 5
2 5
3 5


Ahora bien, lo que quiero es que en una consulta pueda saber cuales
empleados tienen todos los Tipos,
es decir, que mi consulta final de debe arrojar lo siguiente
3 Empleado 3
5 Empleado 5

debido a que solo el Id de empleado 3 y 5 tienen todos los tipos, espero
me
haya explicado bien, y que me puedan ayudar, igualmente agradezco a quien
lea el mensaje y me pueda ayudar



Respuesta Responder a este mensaje
#3 Alejandro Mesa
17/10/2006 - 15:55 | Informe spam
Jiordie,

Ahora esta mejor. Cuando postees este tipo de problemas, es muy conveniente
para quien quiere ayudar que se adjunten las sentencias de DDL y DML para no
tener que perder tiempo y poder probar la solucion que se recomienda. Creo
que la ayuda debe ser mutua, no crees?

Existe una operacion conocida como "division relacional", que nos sirve para
resolver este problema.

select e.*
from dbo.empleados as e
where e.[Id] in (
select v.IdEmpleado
from dbo.tabla_vinculada as v
group by v.IdEmpleado
having count(distinct v.IdTipo) = (select t.[Id] from dbo.Tipos as t)

)
go

Relational Division
http://www.dbazine.com/ofinterest/o...les/celko1


AMB

"Jiordie" wrote:

te coloco la esctructura bien
Tabla de Tipos

Id Nombre
1 Tipo Uno
2 Tipo Dos
3 Tipo Tres

Tabla Vinculada

IdTipo IdEmpleado
1 1
2 1
1 2
3 2
1 3
2 3
3 3
1 4
3 4
1 5
2 5
3 5

Tabla de empleados

Id Nombre
1 Empleado Uno
2 Empleado Dos
3 Empleado Tres
4 Empleado Cuatro
5 Empleado Cinco

El conjunto resultante debe ser algo asi

3 Empleado Tres
5 Empleado Cinco

Solo los empleados 3 y 5 ya que son los únicos que tienen los tres tipo de
la tabla de tipos.

Espero que ahora este mas claro


"Alejandro Mesa" escribió en el
mensaje news:
> Jiordie,
>
> Esta muy confusa la estructura y la data que posteastes. Crees que
> pudieras
> postear la estructura y data de ejemplo usando DML?
>
> create table
>
> insert into ...
>
>
> AMB
>
>
> "Jiordie" wrote:
>
>> Hola a todos!
>> Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
>> hacer, entonces por eso pregunto acá que es donde estan los expertos:
>>
>> Tengo los siguientes conjuntos de datos:
>> Maestro Tipo Vinculada Empleado
>> Id Nombre IdTipo IdEmpleado Id Nombre
>> 1 Tipo 1 1 1 1 Empleado 1
>> 2 Tipo 2 2 1 2 Empleado 2
>> 3 Tipo 3 1 2 3 Empleado 3
>> 3 2 4 Empleado 4
>> 1 3 5 Empleado 5
>> 2 3 6 Empleado 6
>> 4 3
>> 1 4
>> 2 4
>> 1 5
>> 2 5
>> 3 5
>>
>>
>> Ahora bien, lo que quiero es que en una consulta pueda saber cuales
>> empleados tienen todos los Tipos,
>> es decir, que mi consulta final de debe arrojar lo siguiente
>> 3 Empleado 3
>> 5 Empleado 5
>>
>> debido a que solo el Id de empleado 3 y 5 tienen todos los tipos, espero
>> me
>> haya explicado bien, y que me puedan ayudar, igualmente agradezco a quien
>> lea el mensaje y me pueda ayudar
>>
>>
>>



Respuesta Responder a este mensaje
#4 jcac
17/10/2006 - 15:59 | Informe spam
Reviza esto quizas te ayude:

Create Table #Tmp(IdT Int, NombreT varchar(20))
Go
Insert Into #Tmp Values (1, 'Tipo Uno')
Insert Into #Tmp Values (2, 'Tipo Dos')
Insert Into #Tmp Values (3, 'Tipo Tres')
Go
Create Table #TmpE(IdE Int, NombreR varchar(20))
Go
Insert Into #TmpE Values (1, 'Empleado Uno')
Insert Into #TmpE Values (2, 'Empleado Dos')
Insert Into #TmpE Values (3, 'Empleado Tres')
Insert Into #TmpE Values (4, 'Empleado Cuatro')
Insert Into #TmpE Values (5, 'Empleado Cinco')
Insert Into #TmpE Values (6, 'Empleado Seis')
Go
Create Table #TmpTE (IdT int, IdE int)
Go
Insert Into #TmpTE Values (1, 1)
Insert Into #TmpTE Values (2, 1)
Insert Into #TmpTE Values (1, 2)
Insert Into #TmpTE Values (3, 2)
Insert Into #TmpTE Values (1, 3)
Insert Into #TmpTE Values (2, 3)
Insert Into #TmpTE Values (3, 3)
Insert Into #TmpTE Values (1, 4)
Insert Into #TmpTE Values (3, 4)
Insert Into #TmpTE Values (1, 5)
Insert Into #TmpTE Values (2, 5)
Insert Into #TmpTE Values (3, 5)
Go
Select Count (*), IdE From #TmpTE Group by Ide Having Count(IdT) = (Select
Count(*) From #Tmp)
Go
Drop Table #Tmp
Drop Table #TmpE
Drop Table #TmpTE
Go

Saludos

"Jiordie" escribió en el mensaje
news:
te coloco la esctructura bien
Tabla de Tipos

Id Nombre
1 Tipo Uno
2 Tipo Dos
3 Tipo Tres

Tabla Vinculada

IdTipo IdEmpleado
1 1
2 1
1 2
3 2
1 3
2 3
3 3
1 4
3 4
1 5
2 5
3 5

Tabla de empleados

Id Nombre
1 Empleado Uno
2 Empleado Dos
3 Empleado Tres
4 Empleado Cuatro
5 Empleado Cinco

El conjunto resultante debe ser algo asi

3 Empleado Tres
5 Empleado Cinco

Solo los empleados 3 y 5 ya que son los únicos que tienen los tres tipo de
la tabla de tipos.

Espero que ahora este mas claro


"Alejandro Mesa" escribió en el
mensaje news:
Jiordie,

Esta muy confusa la estructura y la data que posteastes. Crees que
pudieras
postear la estructura y data de ejemplo usando DML?

create table

insert into ...


AMB


"Jiordie" wrote:

Hola a todos!
Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
hacer, entonces por eso pregunto acá que es donde estan los expertos:

Tengo los siguientes conjuntos de datos:
Maestro Tipo Vinculada Empleado
Id Nombre IdTipo IdEmpleado Id Nombre
1 Tipo 1 1 1 1 Empleado 1
2 Tipo 2 2 1 2 Empleado 2
3 Tipo 3 1 2 3 Empleado 3
3 2 4 Empleado 4
1 3 5 Empleado 5
2 3 6 Empleado 6
4 3
1 4
2 4
1 5
2 5
3 5


Ahora bien, lo que quiero es que en una consulta pueda saber cuales
empleados tienen todos los Tipos,
es decir, que mi consulta final de debe arrojar lo siguiente
3 Empleado 3
5 Empleado 5

debido a que solo el Id de empleado 3 y 5 tienen todos los tipos,
espero me
haya explicado bien, y que me puedan ayudar, igualmente agradezco a
quien
lea el mensaje y me pueda ayudar









Respuesta Responder a este mensaje
#5 BitOne®
18/10/2006 - 06:36 | Informe spam
otro metodo alternativo.


set nocount on

if object_id('tempdb..#tipos','U') is not null
drop table #tipos
go
create table #tipos(
[id] int,
[nombre] char(15)
)
go
insert into #tipos values( 1, 'tipo uno')
insert into #tipos values( 2, 'tipo dos')
insert into #tipos values( 3, 'tipo tres')
go
if object_id('tempdb..#Tabla_Vinculada','U') is not null
drop table #Tabla_Vinculada
go
create table #Tabla_Vinculada (
idtipo int ,
idempleado int
)
go
insert into #tabla_vinculada values (1,1)
insert into #tabla_vinculada values (2,1)
insert into #tabla_vinculada values (1,2)
insert into #tabla_vinculada values (3,2)
insert into #tabla_vinculada values (1,3)
insert into #tabla_vinculada values (2,3)
insert into #tabla_vinculada values (3,3)
insert into #tabla_vinculada values (1,4)
insert into #tabla_vinculada values (3,4)
insert into #tabla_vinculada values (1,5)
insert into #tabla_vinculada values (2,5)
insert into #tabla_vinculada values (3,5)
go
if object_id('tempdb..#tabla_de_empleados','U') is not null
drop table #tabla_de_empleados
go
create table #tabla_de_empleados (
[id] int,
nombre char(15)
)
go
insert into #tabla_de_empleados values (1,'Empleado Uno')
insert into #tabla_de_empleados values (2,'Empleado Dos')
insert into #tabla_de_empleados values (3,'Empleado Tres')
insert into #tabla_de_empleados values (4,'Empleado Cuatro')
insert into #tabla_de_empleados values (5,'Empleado Cinco')
go

set nocount off
go

select a.idempleado
from (select count(idempleado) cantidad,
idempleado
from #tabla_vinculada
group by idempleado) a
inner join
(select count(*) cantidad
from #tipos) b
on a.cantidad= b.cantidad

go


"Jiordie" wrote in message
news:
te coloco la esctructura bien
Tabla de Tipos

Id Nombre
1 Tipo Uno
2 Tipo Dos
3 Tipo Tres

Tabla Vinculada

IdTipo IdEmpleado
1 1
2 1
1 2
3 2
1 3
2 3
3 3
1 4
3 4
1 5
2 5
3 5

Tabla de empleados

Id Nombre
1 Empleado Uno
2 Empleado Dos
3 Empleado Tres
4 Empleado Cuatro
5 Empleado Cinco

El conjunto resultante debe ser algo asi

3 Empleado Tres
5 Empleado Cinco

Solo los empleados 3 y 5 ya que son los únicos que tienen los tres tipo de
la tabla de tipos.

Espero que ahora este mas claro


"Alejandro Mesa" escribió en el
mensaje news:
> Jiordie,
>
> Esta muy confusa la estructura y la data que posteastes. Crees que
> pudieras
> postear la estructura y data de ejemplo usando DML?
>
> create table
>
> insert into ...
>
>
> AMB
>
>
> "Jiordie" wrote:
>
>> Hola a todos!
>> Les cuento que esto ya me ha llevado muchos días y me rendí, no lo pude
>> hacer, entonces por eso pregunto acá que es donde estan los expertos:
>>
>> Tengo los siguientes conjuntos de datos:
>> Maestro Tipo Vinculada Empleado
>> Id Nombre IdTipo IdEmpleado Id Nombre
>> 1 Tipo 1 1 1 1 Empleado 1
>> 2 Tipo 2 2 1 2 Empleado 2
>> 3 Tipo 3 1 2 3 Empleado 3
>> 3 2 4 Empleado 4
>> 1 3 5 Empleado 5
>> 2 3 6 Empleado 6
>> 4 3
>> 1 4
>> 2 4
>> 1 5
>> 2 5
>> 3 5
>>
>>
>> Ahora bien, lo que quiero es que en una consulta pueda saber cuales
>> empleados tienen todos los Tipos,
>> es decir, que mi consulta final de debe arrojar lo siguiente
>> 3 Empleado 3
>> 5 Empleado 5
>>
>> debido a que solo el Id de empleado 3 y 5 tienen todos los tipos,


espero
>> me
>> haya explicado bien, y que me puedan ayudar, igualmente agradezco a


quien
>> lea el mensaje y me pueda ayudar
>>
>>
>>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida