SQL Server


Parte 1: Consultas a la Base de Datos Actividades

Script de la creación de la Base de datos

CREATE TABLE [Topico](

[CodigoTopico] [int] IDENTITY(1,1) NOT NULL,

[NombreTopico] [varchar](50) NULL,

[Descripcion] [varchar](150) NULL,

CONSTRAINT [PK_Topico] PRIMARY KEY CLUSTERED

(

[CodigoTopico] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [GruposTopico](

[CodigoGrupo] [int] NULL,

[CodigoTopico] [int] NULL

) ON [PRIMARY]

GO

CREATE TABLE [GrupoEmpleado](

[CodigoGrupo] [int] NULL,

[Id_Empleado] [int] NULL

) ON [PRIMARY]

GO

CREATE TABLE [Grupo](

[CodigoGrupo] [int] IDENTITY(1,1) NOT NULL,

[NombreGrupo] [varchar](50) NULL,

[Descripcion] [varchar](150) NULL,

CONSTRAINT [PK_Grupo] PRIMARY KEY CLUSTERED

(

[CodigoGrupo] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Empleado](

[Id_Empleado] [int] IDENTITY(1,1) NOT NULL,

[ApellidoPaterno] [varchar](35) NULL,

[ApellidoMaterno] [varchar](35) NULL,

[Nombre1] [varchar](35) NULL,

[Nombre2] [varchar](35) NULL,

CONSTRAINT [PK_Empleado] PRIMARY KEY CLUSTERED

(

[Id_Empleado] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [DetalleActividadDiaria](

[CodigoActividad] [int] NULL,

[Detalle] [varchar](300) NULL

) ON [PRIMARY]

GO

CREATE TABLE [CuentaEmpleado](

[CuentaEmpleado] [varchar](20) NULL,

[Id_Empleado] [int] NULL

) ON [PRIMARY]

GO

CREATE TABLE [ActividadDiaria](

[CodigoActividad] [int] IDENTITY(1,1) NOT NULL,

[CodigoTopico] [int] NULL,

[FechaInicio] [datetime] NULL,

[FechaFinalizacion] [datetime] NULL,

[Estado] [char](1) NULL,

[Id_Empleado] [int] NULL,

CONSTRAINT [PK_ActividadDiaria] PRIMARY KEY CLUSTERED

(

[CodigoActividad] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SCRIPT DE INSERCION DE DATOS.

EMPLEADOS

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Arancibia’,’Miranda’,’Juan’,’Jose’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Toro’,’Carmona’,’Pedro’,’Eduardo’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Torrejón’,’Camargo’,’Isa’,’Rosa’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Sotomayor’,’Quiroga’,’Yulesqui’,”)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Zurita’,’Miranda’,’Gonsalo’,’Pedro’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Barea’,’Vedia’,’Jose’,’Carlos’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Bejarano’,’Saavedra’,’Alejandro’,’Yolei’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Ceballos’,’Duran’,’Alejandra’,’Trina’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Enriquez’,’Barrero’,’Marcel’,’Juan’)

insert into Empleado (ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2)

values (‘Flores’,’Zambrana’,’Carmelo’,”)

clip_image002

TOPICOS

INSERT INTO Topico (NombreTopico, Descripcion)

VALUES(‘Reparación de PC’,’Reparación de los compomentes internos de una computadora’)

INSERT INTO Topico (NombreTopico, Descripcion)

VALUES(‘Reparacion de Impresara’,’Reparación de los componentes internos de una impresora’)

INSERT INTO Topico (NombreTopico, Descripcion)

VALUES(‘Limpieza de Impresora’,’Trabajo de limpiesa y lubricacion de los componentes de una impresora’)

INSERT INTO Topico (NombreTopico, Descripcion)

VALUES(‘Intalación Red de Datos’,’Extendido y configuración de una red de datos categoria 5e’)

INSERT INTO Topico (NombreTopico, Descripcion)

VALUES(‘Desarrollo de Aplicaciones Web’,’Desarrollo de aplicaciones Web en ASP.NET con C#’)

clip_image004

ACTIVIDADES

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (1, Convert(datetime, ’13/10/2009 17:01:32.100′, 103),

Convert(datetime, ’13/10/2009 17:01:32.100′, 103), ‘I’, 1)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (2, Convert(datetime, ’14/10/2009 17:01:32.100′, 103),

Convert(datetime, ’15/10/2009 17:01:32.100′, 103), ‘F’, 2)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (3, Convert(datetime, ’13/10/2009 17:01:32.100′, 103),

Convert(datetime, ’13/10/2009 17:01:32.100′, 103), ‘I’, 1)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (4, Convert(datetime, ’13/10/2009 17:01:32.100′, 103),

Convert(datetime, ’16/10/2009 17:01:32.100′, 103), ‘F’, 2)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (5, Convert(datetime, ’15/10/2009 17:01:32.100′, 103),

Convert(datetime, ’15/10/2009 17:01:32.100′, 103), ‘I’, 3)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (1, Convert(datetime, ’16/10/2009 17:01:32.100′, 103),

Convert(datetime, ’13/10/2009 17:01:32.100′, 103), ‘I’, 4)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (2, Convert(datetime, ’13/10/2009 17:01:32.100′, 103),

Convert(datetime, ’17/10/2009 17:01:32.100′, 103), ‘F’, 5)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (3, Convert(datetime, ’15/10/2009 17:01:32.100′, 103),

Convert(datetime, ’15/10/2009 17:01:32.100′, 103), ‘I’, 6)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (3, Convert(datetime, ’13/10/2009 17:01:32.100′, 103),

Convert(datetime, ’19/10/2009 17:01:32.100′, 103), ‘F’, 1)

INSERT INTO ActividadDiaria(CodigoTopico, FechaInicio, FechaFinalizacion, Estado, Id_Empleado)

VALUES (5, Convert(datetime, ’15/10/2009 17:01:32.100′, 103),

Convert(datetime, ’15/10/2009 17:01:32.100′, 103), ‘I’, 7)

clip_image006

DETALLE DE ACTIDIDAD DIARIA

Insert into DetalleActividadDiaria (CodigoActividad, Detalle)

Values (2, ‘Se ha cambiado el cabezal a que el anteriore estaa muy gastado’)

Insert into DetalleActividadDiaria (CodigoActividad, Detalle)

Values (4, ‘Se ha instalado un número de 120 puntos de red los cuales cumplen la categoria 6e’)

Insert into DetalleActividadDiaria (CodigoActividad, Detalle)

Values (7, ‘Se ha realizado una limpeza completa ya que uno de los compoentes de rodamiento estaba muy mal lubricado’)

Insert into DetalleActividadDiaria (CodigoActividad, Detalle)

Values (9, ‘Se una limpeza superficial no se realizó limpeza de los componentes internos’)

clip_image008

GRUPOS

Insert into Grupo (NombreGrupo, Descripcion)

Values (‘Grupo 1’, ‘Atención al Cliente’)

Insert into Grupo (NombreGrupo, Descripcion)

Values (‘Grupo 2’, ‘Experto’)

Insert into Grupo (NombreGrupo, Descripcion)

Values (‘Grupo 3’, ‘Técnico especialista’)

Insert into Grupo (NombreGrupo, Descripcion)

Values (‘Grupo 4’, ‘Limpieza’)

clip_image010

GRUPO EMPLEADO

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (1, 1)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (1, 2)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (1, 3)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (2, 4)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (2, 5)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (3, 6)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (3, 7)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (4, 8)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (2, 9)

Insert into GrupoEmpleado (CodigoGrupo, Id_Empleado)

Values (4, 10)

clip_image012

CONSULTAS A LA BASE DE DATOS

Todos los empleados que tienen una o más actividades terminadas.

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.Estado as ‘Estado_Actividad’, b.CodigoActividad

from Empleado a inner join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

Where Estado=’F’

clip_image014

Todos los empleados que tienen una actividad

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.Estado as ‘Estado_Actividad’, b.CodigoActividad

from Empleado a inner join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

clip_image016

Los que no tienen actividades

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.Estado as ‘Estado_Actividad’, b.CodigoActividad

from Empleado a left join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

where Estado is null

clip_image018

Esta consulta se ejecuta correctamente en el SQL Server 2008

Los que tienen más de una actividad ordenados por el Numero de actividades

Select COUNT(a.Id_Empleado) as Numero_Actividades, a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2

from Empleado a inner join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

group by a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2

having COUNT(a.Id_Empleado)>1

Order by Numero_Actividades desc

clip_image020

Todos los empleados que tienen actividades finalizadas menores a una fecha, además mostrar el nombre del tópico de la actividad

Select a.Id_Empleado, b.Estado as ‘Estado_Actividad’, b.CodigoActividad, c.NombreTopico, b.FechaInicio, b.FechaFinalizacion

from Empleado a inner join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

inner join Topico c on b.CodigoTopico=c.CodigoTopico

where Estado=’F’ and b.FechaFinalizacion<Convert(datetime, ’17/10/2009 23:59:59.100′,103)

clip_image022

Todos los empleados que tienen actividades finalizadas en un rango de fecha, además mostrar el nombre del tópico de la actividad.

Select a.Id_Empleado, b.Estado as ‘Estado_Actividad’, b.CodigoActividad, c.NombreTopico, b.FechaInicio, b.FechaFinalizacion

from Empleado a inner join ActividadDiaria b on a.Id_Empleado =b.Id_Empleado

inner join Topico c on b.CodigoTopico=c.CodigoTopico

where Estado=’F’ and b.FechaFinalizacion>=Convert(datetime, ’13/10/2009 00:00:00.100′,103)

and b.FechaFinalizacion<=Convert(datetime, ’15/10/2009 23:59:59.100′,103)

clip_image024

Buscar a un Empleado por el Id_Empleado

Select Id_Empleado, ApellidoPaterno, ApellidoMaterno, Nombre1, Nombre2

From Empleado

Where Id_Empleado=1

clip_image026

Buscar a un Tópico por el NombreTópico utilizando LIKE

Select CodigoTopico, NombreTopico, Descripcion

From Topico

Where NombreTopico LIKE ‘%reparaci%’

clip_image028

Mostrar el detalle de las actividades finalizadas

Select a.CodigoActividad, b.Detalle, a.Estado

From ActividadDiaria a inner join DetalleActividadDiaria b on a.CodigoActividad=b.CodigoActividad

Where a.Estado=’F’

clip_image030

Mostrar el detalle de las actividades finalizadas y el nombre del Empleado

Select a.CodigoActividad, b.Detalle, a.Estado, c.Nombre1+’ ‘+c.Nombre2+’ ‘+c.ApellidoPaterno+’ ‘+c.ApellidoMaterno as Nombre_Completo

From ActividadDiaria a inner join DetalleActividadDiaria b on a.CodigoActividad=b.CodigoActividad

inner join Empleado c on a.Id_Empleado=c.Id_Empleado

Where a.Estado=’F’

clip_image032

Todos los empleados de un grupo

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.CodigoGrupo

From Empleado a inner join GrupoEmpleado b on a.Id_Empleado=b.Id_Empleado

clip_image034

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.CodigoGrupo, c.NombreGrupo

From Empleado a inner join GrupoEmpleado b on a.Id_Empleado=b.Id_Empleado

inner join Grupo c on b.CodigoGrupo=c.CodigoGrupo

clip_image036

Select a.ApellidoPaterno, a.ApellidoMaterno, a.Nombre1, a.Nombre2, b.CodigoGrupo, c.NombreGrupo

From Empleado a inner join GrupoEmpleado b on a.Id_Empleado=b.Id_Empleado

inner join Grupo c on b.CodigoGrupo=c.CodigoGrupo

Where c.NombreGrupo=’Grupo 3′

clip_image038

Grupo al que pertenece el empleado

Select a.CodigoGrupo, a.NombreGrupo, a.Descripcion, c.ApellidoPaterno, c.Nombre1

From Grupo a inner join GrupoEmpleado b on a.CodigoGrupo=b.CodigoGrupo

inner join Empleado c on b.Id_Empleado=c.Id_Empleado

Where c.ApellidoPaterno LIKE ‘%Be%’ and c.Nombre1 LIKE ‘%Al%’

clip_image040

Todas las actividades más el detalle de un empleado

Select a.CodigoActividad, d.NombreTopico, a.Estado, a.FechaInicio, a.FechaFinalizacion, b.Detalle

From ActividadDiaria a inner join DetalleActividadDiaria b on a.CodigoActividad=b.CodigoActividad

inner join Empleado c on a.Id_Empleado=c.Id_Empleado

inner join Topico d on a.CodigoTopico=d.CodigoTopico

clip_image042

Select a.CodigoActividad, d.NombreTopico, a.Estado, a.FechaInicio, a.FechaFinalizacion, b.Detalle, c.Id_Empleado

From ActividadDiaria a inner join DetalleActividadDiaria b on a.CodigoActividad=b.CodigoActividad

inner join Empleado c on a.Id_Empleado=c.Id_Empleado

inner join Topico d on a.CodigoTopico=d.CodigoTopico

Where c.Id_Empleado=1

clip_image044

Todas las actividades de un empleado

Actividades de un grupo en una fecha

Todas las actividades de un empleado

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s