Sie sind auf Seite 1von 16

Ejercicio 1: Listas de seleccin

1. Listar todos los empleados.


Numem Nombre
p
101
Antonio
Viguer
102
Alvaro Jaumes
103
104
105
106
107
108
109
110
111
112
113

Eda Oficin Titulo


Contrato
d
a
45 12
representante 1986-10-20
00:00:00.000
48 21
representante 1986-12-10
00:00:00.000
Juan Rovira 29 12
representante 1987-03-01
00:00:00.000
Jos Gonzlez 33 12
dir ventas
1987-05-19
00:00:00.000
Vicente
37 13
representante 1988-02-12
Pantalla
00:00:00.000
Luis Antonio 52 11
director
1988-06-14
general
00:00:00.000
Jorge
49 22
representante 1988-11-14
Gutirrez
00:00:00.000
Ana
62 21
dir ventas
1989-10-12
Bustamante
00:00:00.000
Mara Sunta 31 NULL representante 1999-10-12
00:00:00.000
Juan Victor
41 NULL representante 1990-01-13
00:00:00.000
Juan Gris
50 NULL representante 2005-05-01
00:00:00.000
Julin
50 NULL representante 2006-05-01
Martorell
00:00:00.000
Juan Gris
18 NULL representante 2007-01-01
00:00:00.000

Regin
NULL
NULL
centro
Centro
centro
este
este
2. este
este
este
norte
norte
oeste
Oeste

Ciudad
Elx
Valencia
Aranjuez
Mstoles
Madrid
Alicante
Valencia
Castellon
Valencia
Valencia
Pamplona
pamplona
Badajoz
A Corua

Ventas
0,00
NULL
15000,00
0,00
NULL
73500,00
69300,00
36800,00
2100,00
0,00
200000,00
NULL
84400,00
18600,00

Ejercicio 2: Utilizando ORDER BY

Jefe Cuota

ventas

104

30500,0
0
47400,0
0
28600,0
0
14300,0
0
36800,0
0
29900,0
0
18600,0
0
36100,0
0
39200,0
0
7600,00

30000,0
0
108 35000,0
0
104 27500,0
0
106 20000,0
0
104 35000,0
0
NUL 27500,0
L
0
108 30000,0
0
106 35000,0
0
106 3000,00
104

NULL

NUL
L
NUL
L
NUL
L

10000,0
0
10000,0
0
10000,0
0

60000,0
0
91000,0
0
0,00

Listar todos los


empleados,
al
igual que en el
ejercicio anterior,
pero cambiando el
nombre de la
columna contrato
por Fecha de
contrato.

1. Listar de cada regin las oficinas por orden de mejores ventas.


2. Saber los productos que tienen un precio superior o igual al precio de la mitad de los productos.
Idfab
rei
rei
imm
imm
imm
bic
imm
qsa
rei
fea
bic
bic
fea
qsa

Idproducto
2a44l
2a44r
779c
775c
773c
41003
887x
xk47
2a44g
114
41089
41672
112
xk48a

Descripcin
bomba l
bomba r
reostato 3
reostato 2
reostato
manivela
manivela
red
pas
cubo
rodamiento
plato
cubo
red

Precio
45,00
45,00
18,75
14,25
9,75
6,52
4,75
3,55
3,50
2,43
2,25
1,80
1,48
1,48

existencias
12
12
0
5
28
3
32
38
14
15
78
0
115
37

Ejercicio 2: Utilizando WHERE


1. Listar los empleados que tienen ventas pero que no han alcanzado su cuota.
Numemp
104
107

Nombre
Jos Gonzlez
Jorge Gutirrez

Ventas
14300,00
18600,00

cuota
20000,00
30000,00

2. Hallar los empleados que no estn a cargo del empleado 106.


Numemp
101
102
103
105
106
107
110
111
112
113

nombre
Antonio Viguer
Alvaro Jaumes
Juan Rovira
Vicente Pantalla
Luis Antonio
Jorge Gutirrez
Juan Victor
Juan Gris
Julin Martorell
Juan Gris

Listar de cada jefe su cdigo y el cdigo y nombre de sus subordinados ordenados por nombres.
Jefe
104
104
104
104
106
106

Numemp
101
103
110
105
108
104

nombre
Antonio Viguer
Juan Rovira
Juan Victor
Vicente Pantalla
Ana Bustamante
Jos Gonzlez

106
108
108

109
102
107

Mara Sunta
Alvaro Jaumes
Jorge Gutirrez

Listar todos los pedidos, mostrando el precio y la descripcin del producto.


Codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Numpedid Fechapedido
o
110036
1989-10-12
00:00:00.000
110037
1989-10-12
00:00:00.000
112963
2008-05-10
00:00:00.000
112968
1990-01-11
00:00:00.000
112975
2008-02-11
00:00:00.000
112979
1989-10-12
00:00:00.000
112983
2008-05-10
00:00:00.000
112987
2008-01-01
00:00:00.000
112989
2008-12-10
00:00:00.000
112992
1990-04-15
00:00:00.000
112993
2008-03-10
00:00:00.000
112997
2008-04-04
00:00:00.000
113003
2008-02-05
00:00:00.000
113007
2008-01-01
00:00:00.000
113012
2008-05-05
00:00:00.000
113013
2008-12-28
00:00:00.000
113024
2008-07-04
00:00:00.000
113027
2008-02-05
00:00:00.000
113034
2008-11-05
00:00:00.000
113042
2008-01-01
00:00:00.000
113045
2008-07-02
00:00:00.000
113048
2008-02-02
00:00:00.000
113049
2008-04-04
00:00:00.000
113051
2008-07-06
00:00:00.000
113055
2009-04-01
00:00:00.000
113057
2008-11-01
00:00:00.000
113058
1989-07-04
00:00:00.000
113062
2008-07-04
00:00:00.000
113065
2008-06-03
00:00:00.000
113069
2008-08-01
00:00:00.000

Clie

Rep

Fab

Producto

Cant Importe

Precio

descripcion

2107 110

aci

4100z

22,50

NULL

mont

2117 106

rei

2a44l

31,50

45,00

bomba l

2103 105

aci

41004

28

3,276

NULL

art t4

2102 101

aci

41004

34

39,78

NULL

art t4

2111 103

rei

2a44g

21,00

3,50

pas

2114 108

aci

4100z

150,00

NULL

mont

2103 105

aci

41004

7,02

NULL

art t4

2103 105

aci

4100y

11

275,00

NULL

extractor

2101 106

fea

114

14,58

2,43

cubo

2118 108

aci

41002

10

7,60

NULL

bisagra

2106 102

rei

2a45c

24

18,96

0,79

junta

2124 107

bic

41003

6,52

6,52

manivela

2108 109

imm 779c

56,25

18,75

reostato 3

2112 108

imm 773c

29,25

9,75

reostato

2111 105

aci

41003

35

37,45

NULL

art t3

2118 108

bic

41003

6,52

6,52

manivela

2114 108

qsa

xk47

20

71,00

3,55

red

2103 105

aci

41002

54

450,00

NULL

bisagra

2107 110

rei

2a45c

6,32

0,79

junta

2113 101

rei

2a44r

225,00

45,00

bomba r

2112 110

rei

2a44r

10

450,00

45,00

bomba r

2120 102

imm 779c

37,50

18,75

reostato 3

2118 108

qsa

xk47

7,76

3,55

red

2118 108

qsa

xk47

14,20

3,55

red

2108 101

aci

4100x

1,50

NULL

junta

2111 103

aci

4100x

24

NULL

NULL

junta

2108 109

fea

112

10

14,80

1,48

cubo

2124 107

bic

41003

10

24,30

6,52

manivela

2106 102

qsa

xk47

21,30

3,55

red

2109 107

imm 773c

22

313,50

9,75

reostato

Listar los pedidos superiores a 250 euros, incluyendo el nombre del vendedor que tom el pedido y
el nombre del cliente que lo solicit.
Numpedido Fechapedido Clie Rep Fab Producto Cant Precio Cliente
vendedor
112987
01/01/08
2103 105 aci 4100y
11 275,00 Jaime Llorens Vicente Pantalla
113027
05/02/08
2103 105 aci 41002
54 450,00 Jaime Llorens Vicente Pantalla
113045
02/07/08
2112 110 rei 2a44r
10 450,00 Mara Silva
Juan Victor
113069
01/08/08
2109 107 imm 773c
22 313,50 Alberto Juanes Jorge Gutirrez
Listar los pedidos superiores a 250 euros, mostrando el nombre del cliente que solicit el pedido y
el nombre del vendedor asignado a ese cliente.
Codigo Numpedido Fechapedido Clie Rep Fab Producto Cant Importe Cliente Vendedor
asignado
8
112987
2008-01-01
2103 105 aci 4100y
11 275,00 Jaime
Juan Victor
00:00:00.000
Llorens
18
113027
2008-02-05
2103 105 aci 41002
54 450,00 Jaime
Juan Victor
00:00:00.000
Llorens
21
113045
2008-07-02
2112 110 rei 2a44r
10 450,00 Mara Ana
00:00:00.000
Silva
Bustamante
30
113069
2008-08-01
2109 107 imm 773c
22 313,50 Alberto Juan Rovira
00:00:00.000
Juanes
Listar los pedidos superiores a 250 euros, mostrando adems el nombre del cliente que solicit el
pedido y el nombre del vendedor asignado a ese cliente y la ciudad de la oficina donde el vendedor
trabaja.

Numpedido
Clie Rep Cliente
Repclie Vendedor asignado
112987
2103 105 Jaime Llorens
105
Juan Victor
113027
2103 105 Jaime Llorens
105
Juan Victor
113045
2112 110 Mara Silva
110
Ana Bustamante
113069
2109 107 Alberto Juanes
107
Juan Rovira
Hallar los pedidos recibidos los das en que un nuevo empleado fue contratado.

ciudad
NULL
NULL
Badajoz
Alicante

Numpedido Fechapedido
Rep Numemp Nombre
Contrato
110036
1989-10-12 00:00:00.000 110 108
Ana Bustamante 1989-10-12 00:00:00.000
110037
1989-10-12 00:00:00.000 106 108
Ana Bustamante 1989-10-12 00:00:00.000
112979
1989-10-12 00:00:00.000 108 108
Ana Bustamante 1989-10-12 00:00:00.000
Hallar los empleados que realizaron su primer pedido el mismo da que fueron contratados.

Numemp Nombre
Contrato
Numpedido Rep fechapedido
108
Ana Bustamante 1989-10-12 00:00:00.000 112979
108 1989-10-12 00:00:00.000
Mostrar de cada empleado su cdigo, nombre, ventas, oficina y ciudad en la que est ubicada su
oficina.

Numemp
101
102
103
104
105
106
107
108
109
110
111
112
113

Nombre
Antonio Viguer
Alvaro Jaumes
Juan Rovira
Jos Gonzlez
Vicente Pantalla
Luis Antonio
Jorge Gutirrez
Ana Bustamante
Mara Sunta
Juan Victor
Juan Gris
Julin Martorell
Juan Gris

ventas
30500,00
47400,00
28600,00
14300,00
36800,00
29900,00
18600,00
36100,00
39200,00
7600,00
60000,00
91000,00
0,00

Oficina
12
21
12
12
13
11
22
21
NULL
NULL
NULL
NULL
NULL

ciudad
Alicante
Badajoz
Alicante
Alicante
Castellon
Valencia
A Corua
Badajoz
NULL
NULL
NULL
NULL
NULL

Listar los empleados con una cuota superior a la de su jefe, los campos a obtener son el nmero,
nombre y cuota del empleado y nmero, nombre y cuota de su jefe.

Numemp
101
103
105
108

Nombre
Antonio Viguer
Juan Rovira
Vicente Pantalla
Ana Bustamante

Cuota
30000,00
27500,00
35000,00
35000,00

Jefe
104
104
104
106

Nombre jefe
Jos Gonzlez
Jos Gonzlez
Jos Gonzlez
Luis Antonio

Cuota jefe
20000,00
20000,00
20000,00
27500,00

Desde el entorno grfico cambia el empleado 111, asgnale el jefe 110 y la oficina 21. Despus
cambia la sentencia anterior para que salgan tambin los empleados cuyo jefe no tenga cuota.
Numemp
Nombre
Cuota
Jefe Nombre jefe
Cuota jefe
101
Antonio Viguer
30000,00
104 Jos Gonzlez
20000,00
103
Juan Rovira
27500,00
104 Jos Gonzlez
20000,00
105
Vicente Pantalla
35000,00
104 Jos Gonzlez
20000,00
108
Ana Bustamante
35000,00
106 Luis Antonio
27500,00
111
Juan Gris
10000,00
110 Juan Victor
NULL
Listar los empleados que no estn asignados a la misma oficina que su jefe, queremos nmero,
nombre y nmero de oficina tanto del empleado como de su jefe.
Numemp
Nombre
Oficina
Jefe Nombre jefe
Oficina jefe
104
Jos Gonzlez
12
106 Luis Antonio
11
105
Vicente Pantalla
13
104 Jos Gonzlez
12
107
Jorge Gutirrez
22
108 Ana Bustamante
21
108
Ana Bustamante
21
106 Luis Antonio
11
En el punto anterior no salen los que no tienen oficina, cambiar la sentencia para que aparezcan.
Numemp
Nombre
Oficina
Jefe Nombre jefe
Oficina jefe
104
Jos Gonzlez
12
106 Luis Antonio
11
105
Vicente Pantalla
13
104 Jos Gonzlez
12
107
Jorge Gutirrez
22
108 Ana Bustamante
21
108
Ana Bustamante
21
106 Luis Antonio
11

109
Mara Sunta
NULL
106 Luis Antonio
11
110
Juan Victor
NULL
104 Jos Gonzlez
12
111
Juan Gris
21
110 Juan Victor
NULL
Lo mismo que la anterior pero queremos que aparezca tambin la ciudad de las oficinas (tanto del
empleado como de su jefe).
Numemp Nombre
Oficina Ciudad
Jefe Nombre jefe
Oficina jefe ciudad
104
Jos Gonzlez
12
Alicante 106 Luis Antonio
11
Valencia
105
Vicente Pantalla 13
Castellon 104 Jos Gonzlez
12
Alicante
107
Jorge Gutirrez
22
A Corua 108 Ana Bustamante 21
Badajoz
108
Ana Bustamante 21
Badajoz 106 Luis Antonio
11
Valencia
109
Mara Sunta
NULL NULL
106 Luis Antonio
11
Valencia
110
Juan Victor
NULL NULL
104 Jos Gonzlez
12
Alicante
111
Juan Gris
21
Badajoz 110 Juan Victor
NULL
NULL

Ejercicio 2: Comparar tablas


1. Obtener los empleados de GestionSimples que aparecen en Gestion con otra oficina.
El resultado ser que no devuelve filas.

Funciones de agregado
1. Cuntas oficinas tenemos en Valencia?
Valencianas
4
2. Hallar cuntos pedidos hay de ms de 250 euros.
Superiores a 250
4
3. Cuntos ttulos (cargos) de empleados se usan?
Cuntos ttulos
3
4. Entre qu cuotas se mueven los empleados?
Cuota mnima
3000,00

Cuota mxima
35000,00

Ejercicio 2: Agrupamiento de filas: GROUP BY


1. De cada vendedor (todos) queremos saber su nombre y el importe total vendido. En caso de
que el importe sea NULL, cambiarlo por 0,00 con la funcin ISNULL().
numemp
101
102
103

nombre
Antonio Viguer
Alvaro Jaumes
Juan Rovira

Importe vendido
266,28
77,76
21,00

104
105
106
107
108
109
110
111
112
113
114

Jos Gonzlez
Vicente Pantalla
Luis Antonio
Jorge Gutirrez
Ana Bustamante
Mara Sunta
Juan Victor
Juan Gris
Julin Martorell
Juan Gris
Pablo Moreno

0,00
772,746
46,08
344,32
286,33
71,05
478,82
0,00
0,00
0,00
0,00

De cada empleado, obtener el importe vendido a cada cliente.


rep
106
101
105
102
110
101
109
107
103
105
108
110
101
108
106
108
102
107

Cliente
2101
2102
2103
2106
2107
2108
2108
2109
2111
2111
2112
2112
2113
2114
2117
2118
2120
2124

Importe vendido
14,58
39,78
735,296
40,26
28,82
1,50
71,05
313,50
21,00
37,45
29,25
450,00
225,00
221,00
31,50
36,08
37,50
30,82

Repetir la consulta anterior pero ahora deben aparecer tambin los empleados que no han
vendido nada.
rep
101
101
101
102
102
103
104
105
105
106
106
107

Cliente
2102
2108
2113
2106
2120
2111
NULL
2103
2111
2101
2117
2109

Importe vendido
39,78
1,50
225,00
40,26
37,50
21,00
NULL
735,296
37,45
14,58
31,50
313,50

107
108
108
108
109
110
110
111
112
113
114

2124
2112
2114
2118
2108
2107
2112
NULL
NULL
NULL
NULL

30,82
29,25
221,00
36,08
71,05
28,82
450,00
NULL
NULL
NULL
NULL

2. Repetir la consulta pero ahora debe aparecer tambin el total de cunto ha vendido cada
empleado. (Recuerda una opcin de la clusula GROUP BY)
rep
NULL
101
101
101
101
102
102
102
103
103
104
104
105
105
105
106
106
106
107
107
107
108
108
108
108
109
109
110
110
110
111
111
112
112
113

clie
NULL
NULL
2102
2108
2113
NULL
2106
2120
NULL
2111
NULL
NULL
NULL
2103
2111
NULL
2101
2117
NULL
2109
2124
NULL
2112
2114
2118
NULL
2108
NULL
2107
2112
NULL
NULL
NULL
NULL
NULL

Importe vendido
2364,386
266,28
39,78
1,50
225,00
77,76
40,26
37,50
21,00
21,00
NULL
NULL
772,746
735,296
37,45
46,08
14,58
31,50
344,32
313,50
30,82
286,33
29,25
221,00
36,08
71,05
71,05
478,82
28,82
450,00
NULL
NULL
NULL
NULL
NULL

113
114
114

NULL
NULL
NULL

NULL
NULL
NULL

En los resultados anteriores no se distinguen bien las lneas que corresponden a totales.
Modificar la consulta para obtener este resultado:
rep

clie

Importe vendido

NULL
101
101
101
101
102
102
102
103
103
104
104
...

NULL
NULL
2102
2108
2113
NULL
2106
2120
NULL
2111
NULL
NULL
....

2364,386
266,28
39,78
1,50
225,00
77,76
40,26
37,50
21,00
21,00
NULL
NULL
... (sigue)

Agrupa
clie
1
1
0
0
0
1
0
0
1
0
0
1
...

Agrupa
numemp
1
0
0
0
0
0
0
0
0
0
0
0
...

3. Ahora modifica la consulta para que las filas de totales aparezcan ms claras. (Recuerda la
funcin CASE)
rep

clie

Importe vendido

Agrupa clie

NULL
101
101
101
101
102
102
102
103
103
104
104
...

NULL
NULL
2102
2108
2113
NULL
2106
2120
NULL
2111
NULL
NULL
....

2364,386
266,28
39,78
1,50
225,00
77,76
40,26
37,50
21,00
21,00
NULL
NULL
... (sigue)

Total empleado
Total empleado

Agrupa
numemp
Total final

Total empleado

Total empleado

Total empleado
...

Ahora coloca las columnas Agrupa delante de las dems columnas:

...

Resultado:
Agrupa
numemp
Total final

Agrupa clie

rep

clie

Importe vendido

Total empleado
Total empleado

NULL
101
101
101
101
102
102
102
103
103
104
104
...

NULL
NULL
2102
2108
2113
NULL
2106
2120
NULL
2111
NULL
NULL
....

2364,386
266,28
39,78
1,50
225,00
77,76
40,26
37,50
21,00
21,00
NULL
NULL
...

Total empleado

Total empleado

... (sigue)

Total empleado
...

Ahora queremos que "Total empleado" aparezca en la columna clie. Piensa primero en cuntas
columnas quieres y luego en cada columna que tiene que salir.
Resultado:
Agrupa
numemp
Total final

... (sigue)

numemp

clie

Importe vendido

NULL
101
101
101
101
102
102
102
103
103
104
104
...

Total empleado
Total empleado
2102
2108
2113
Total empleado
2106
2120
Total empleado
2111
NULL
Total empleado
....

2364,386
266,28
39,78
1,50
225,00
77,76
40,26
37,50
21,00
21,00
NULL
NULL
...

El empleado 104 (y otros) no ha vendido a nadie y por eso sale en la columna clie la palabra
NULL, queremos que en estos casos no aparezca nada (se deje en blanco), y el importe si es
NULL que salga un cero.

Agrupa
numemp
Total final

numemp

clie

Importe vendido

NULL
101
101

Total empleado
2102
2108

2364,386
39,78
1,50

... (sigue)

101
101
102
102
102
103
103
104
104
...

2113
Total empleado
2106
2120
Total empleado
2111
Total empleado
Total empleado
....

225,00
266,28
40,26
37,50
77,76
21,00
21,00
0,00
0,00
...

Nota: Recuerda la funcin ISNULL() (para la columna importe vendido) y la funcin CASE
con
diferentes
condiciones
(para
la
columna
clie).
Lo rematamos para que el resultado quede as:

Total final

numemp
...
101
101
101
101
102
102
102
103
103
104
104

clie
...
2102
2108
2113
Total empleado
2106
2120
Total empleado
2111
Total empleado
Total empleado

Importe vendido
2364,386
39,78
1,50
225,00
266,28
40,26
37,50
77,76
21,00
21,00
0,00
0,00

Para realizar los ejercicios, debers utilizar la base de datos GestionSimples.


1. Listar los clientes (numclie, nombre) asignados a Juan que no han remitido un pedido superior a 300
euros.
numclie
2107
2107
2121
2125

nombre
Julian Lpez
Julian Lpez
Vicente Ros
Pepito Grillo

2. Listar los empleados (numemp, nombre) mayores de 40 aos que dirigen a un vendedor con
supervit (ha vendido ms que su cuota).
numemp
106
108

nombre
Luis Antonio
Ana Bustamante

110

Juan Victor

3. Listar los empleados (cdigo de empleado) cuyo importe de pedido medio para productos fabricados
por ACI es superior al importe medio global (de todos los pedidos de todos los empleados).
rep
105
4. Listar los empleados (numemp, nombre, ventas) cuyas ventas son iguales o superiores al objetivo de
las oficinas de una determinada ciudad (de todas las oficinas de esa ciudad). Las oficinas con objetivo
nulo no se deben de tener en cuenta (como si no existiesen). Y si no hay oficinas en la ciudad no
queremos que salga ningn empleado. Intentar primero resolver la consulta utilizando >=ALL. Probar
primero con A Corua:
numemp
102
111
112

nombre
Alvaro Jaumes
Juan Gris
Julin Martorell

ventas
47400,00
60000,00
91000,00

Ahora con Pamplona. Pamplona tiene una oficina con objetivo nulo, en este caso no queremos que esa
oficina cuente.
numemp
101
102
103
105
106
108
109
111
112
114

nombre
Antonio Viguer
Alvaro Jaumes
Juan Rovira
Vicente Pantalla
Luis Antonio
Ana Bustamante
Mara Sunta
Juan Gris
Julin Martorell
Pablo Moreno

ventas
30500,00
47400,00
28600,00
36800,00
29900,00
36100,00
39200,00
60000,00
91000,00
37000,00

Para Barcelona. En este caso no tenemos oficinas en Barcelona por lo que no tiene que salir ningn
empleado.
Ahora para Madrid. Como en Madrid slo hay una oficina y no tiene objetivo no tiene que salir ningn
empleado.
Intentar resolver la consulta sin utilizar ALL.
5. Listar las oficinas en donde todos los empleados tienen ventas que superan al 50% del objetivo de la
oficina.
oficina
11
13
22

ciudad
Valencia
Castellon
A Corua

Para realizar los ejercicios, debers utilizar la base de datos Gestion8.

1. Aadir a la oficina 40 otro empleado, Luis Valverde, con nmero de empleado 436, con los mismos
datos que el anterior pero su jefe ser el director de la oficina 40 (no sabemos qu nmero tiene).
2. Pasar los pedidos de octubre 1989 a diciembre 2008. (3 filas afectadas)
3. Queremos actualizar el importe de los pedidos del mes actual con el precio almacenado en la tabla
productos.
Ayuda: En un primer paso obtener los pedidos del mes actual obteniendo tambin el precio unitario
dentro del pedido y el precio del producto de la tabla de productos.
codigo
1
2
6
9
16

numpedido
110036
110037
112979
112989
113013

fechapedido
2008-12-12 00:00:00.000
2008-12-12 00:00:00.000
2008-12-12 00:00:00.000
2008-12-10 00:00:00.000
2008-12-28 00:00:00.000

cant
9
7
6
6
1

importe
22,50
31,50
150,00
14,58
6,52

precio pedido
2,50
4,50
25,00
2,43
6,52

precio
NULL
45,00
NULL
2,43
5,16

Actualizar despus la tabla de pedidos cambiando los importes para que el precio unitario corresponda
con el precio del producto. Los pedidos de los productos que no tienen precio se quedarn como
estaban. (3 filas afectadas)
codigo
1
2
6
9
16

numpedido
110036
110037
112979
112989
113013

fechapedido
2008-12-12 00:00:00.000
2008-12-12 00:00:00.000
2008-12-12 00:00:00.000
2008-12-10 00:00:00.000
2008-12-28 00:00:00.000

cant
9
7
6
6
1

importe
22,50
315,00
150,00
14,58
5,16

precio pedido
2,50
4,50
25,00
2,43
6,52

precio
NULL
45,00
NULL
2,43
5,16

4. Se ven algunos productos que no tienen precio, ahora vamos a actualizar el precio de estos
productos
con
el
precio
medio
utilizado
en
los
pedidos
donde
aparecen.
Ayuda: Primero sacamos los productos que queremos actualizar con los pedidos correspondientes:
idfab
aci
aci
aci
aci
aci
aci
aci
aci
aci
aci
aci
aci

idproducto
41001
41002
41002
41003
41004
41004
41004
4100x
4100x
4100y
4100z
4100z

precio
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL

codigo
NULL
10
18
15
3
4
7
25
26
8
1
6

numpedido
NULL
112992
113027
113012
112963
112968
112983
113055
113057
112987
110036
112979

fechapedido
NULL
1990-04-15 20:00:00.000
2008-02-05 00:00:00.000
2008-05-05 00:00:00.000
2008-05-10 00:00:00.000
1990-01-11 00:00:00.000
2008-05-10 00:00:00.000
2009-04-01 00:00:00.000
2008-11-01 00:00:00.000
2008-01-01 00:00:00.000
2008-12-12 00:00:00.000
2008-12-12 00:00:00.000

importe
NULL
7,60
450,00
37,45
3,276
39,78
7,02
1,50
NULL
275,00
22,50
150,00

precio pedido
NULL
0,76
8,3333
1,07
0,117
1,17
1,17
0,25
NULL
25,00
2,50
25,00

Vemos que el producto ACI 41001 no se podr actualizar porque no tiene pedidos. Pero los dems se
actualizarn con el precio medio de sus pedidos, debern quedar as (7 filas afectadas):
idfab
aci
aci
aci

idproducto
41001
41002
41003

precio
NULL
4,55
1,07

aci
aci
aci
aci

41004
4100x
4100y
4100z

0,82
0,25 *
25,00
13,75

* aci 4100x tiene 2 pedidos pero uno sin precio por lo que no cuenta
5. Eliminar los pedidos del representante Luis Antonio. (2 filas afectadas)
6. Eliminar las oficinas que no tengan empleados. (11 filas afectadas)
7. Intenta eliminar el empleado 102. Te saldr un error : "Instruccin DELETE en conflicto con la
restriccin..."
Reflexiona sobre el error y elabora una consulta que liste los empleados que pueden dar problemas
(aqu no se trata de utilizar operaciones aprendidas en este tema sino de practicar la integridad
referencial y de paso recordar instrucciones vistas en temas anteriores).
Elabora ahora una consulta que liste los que se pueden borrar sin problemas, estos son:
numemp
112
113
114
115
436
Borra el primero de la lista, ste s lo puedes borrar.
8. Eliminar los pedidos de productos de ACI cuyo precio de venta en el pedido no corresponda con el
precio unitario del producto de la tabla de productos. (4 filas afectadas)
9. Ahora vamos a recuperar las tablas tal cual estaban al principio, para ello utilizaremos las copias
realizadas al principio de Nuevaoficinas, etc.
Lo ms cmodo ser vaciar las tablas y rellenarlas de nuevo con los datos de las tablas Nueva...
Pero como las tablas tienen claves ajenas y la tabla de pedidos un campo de identidad, lo tendrs que
hacer
de
forma
que
no
d
error.
Al final las tablas pedidos, clientes,... deben tener los mismos datos que NuevaPedidos,
NuevaClientes...
Empieza
por
eliminar
los
datos
de
las
tablas.
Ayuda: Recuerda el campo de identidad (codigo) que tenemos en la tabla de pedidos, cuando
insertemos las filas deber empezar otra vez por el valor 1, para poder eliminar todas las filas igual
tienes que eliminar algunos valores (por lo de la integridad referencial), hazlo siempre con SQL.
Inserta
los
datos
de
las
tablas
Nueva..
a
las
tablas
normales.
Ayuda: Necesitars una o varias instrucciones por cada tabla (recuerda las reglas de integridad
referencial), en algunos casos las filas se tendrn que rellenar en varios pasos, y el orden en que
rellenes las tablas tambin es importante.
1. Crea una nueva base de datos Gestion2, los archivos fsicos se llamarn tambin Gestion2 y se
crear en la misma carpeta que la base de datos Gestion.

2. En Gestion2, crea las mismas tablas que tenemos en Gestion con las mismas relaciones entre ellas.
Este ejercicio se rsuelve con varias sentencias.
3. La tabla Productos de Gestion2 consideramos que sufre pocas operaciones de nuevos registros o
eliminacin de registros y el nico campo que sufre actualizaciones frecuentes es el campo existencias;
por otro lado es frecuente consultar los productos por el campo descripcion (aunque varios productos
puedan tener la misma descripcin). Se podra mejorar la base de datos? Si es que s indica de qu
forma y escribe la instruccin correspondiente; en cualquier caso justifica la respuesta.
4. Qu se puede hacer para que no puedan existir en la tabla de clientes dos clientes con el mismo
nombre?
5. En nuestro sistema vamos a efectuar muchas consultas recuperando a la vez los pedidos y los
productos asociados a cada uno de ellos, por eso sera bueno. Completa la frase y escribe la
sentencia SQL correspondiente.
6. Elimina la tabla clientes dejando en pedidos el campo cliente a NULL. Este ejercicio se resuelve con
varias sentencias y se puede resolver de varias maneras. Resulvelo de distintas formas.
7. Ahora queremos permitir que dos clientes tengan el mismo nombre.
8. Elimina la base de datos Gestion2, as podrs volver a hacer los ejercicios.
Para realizar los ejercicios, utiliza Gestion10 que has creado en los ejercicios paso a paso de este tema.
1. Aadir a la tabla de productos un campo StockMinimo, y rellenarlo de tal forma que el stock
mnimo valorado de cada artculo sea de 100. El stock mnimo valorado es el resultado de multiplicar
el stock mnimo por el precio del producto. No hace falta incluir estas sentencias en un procedimiento
ya que slo nos sirven para preparar la tabla productos pero redactarlas en Transact-SQL para repasar
temas
anteriores.
Seguidamente, escribir un procedimiento que se pueda ejecutar en cualquier momento y que actualice
una lista de productos bajo stock. Esta lista se guarda en una tabla ProductosAPedir y contiene el
cdigo completo del producto, su descripcin, existencias y cantidad a pedir (para que el producto
supere en 5 unidades su stock mnimo). Si un producto bajo mnimo (cuyas existencias no llegan al
stock mnimo) no est en esa tabla, insertarlo, si est actualizar el campo CantidadAPedir, y si ya no
est bajo mnimo y est en la tabla, eliminar el registro de ProductosAPedir.
2. Obtener un listado de las oficinas de una determinada regin con ventas superiores a un determinado
importe.
3. Crea un nuevo procedimiento parecido al anterior pero que nos devuelva tambin el nmero de
oficinas recuperadas. Utilizar un parmetro de salida.
4. Crea un nuevo procedimiento parecido al anterior pero que nos devuelva tambin el nmero de
oficinas recuperadas. Sin utilizar parmetros de salida.
5. Crea un procedimiento que muestre los n productos ms caros, n es un valor que se indicar en la
llamada.
6. Crea otro procedimiento que muestre los n productos ms caros con empates y nos devuelva cuntos
hay.
7. No dejar eliminar productos que tengan existencias.
8. Hacer que no se pueda insertar un pedido si no hay suficiente stock.

9. Crea un procedimiento que impida eliminar varias oficinas en una sla operacin DELETE.

Das könnte Ihnen auch gefallen