Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] FINAL GDD 20/12/2016
Autor Mensaje
luchotc Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Sep 2016
Mensaje: #1
[APORTE] FINAL GDD 20/12/2016 Finales Gestión de Datos
Buenas! Si alguno tiene una foto o algo le pido que la publique, yo escribo lo que me acuerdo

V o F:

1)Si una función de hash tiene poca dispersión es más probable que haya colisiones
2)En una vista nunca se pueden realizar inserts

Teoría:

Mencione elementos del motor de base de datos para la seguridad
Mencione que utilidad tiene saber el plan de ejecución de una consulta

Práctica:

3a) Te daban una query en pl/sql, había que pasarla a ansi sin usar el outer join.

Select nombre, importe, nvl(cli_id, "sin cliente")
From cliente c, factura f
where f.cli_id(+) = c.cli_id
and f.anio > (sysdate - 365)

Aclaro que el (+) al lado del f.cli_id reprensenta un left join, osea lo que hacía esa query era traer todas las facturas, tengan clientes o no, y si no tenían, mostraba "sin cliente"

3b) Te daban una query y era un multiple choice a ver que pasaba.
La solicitado por la query era traer las facturas del ultima año que no estén anuladas (Aclaraba que una factura anulada era aquella que no tenía nada en f.cli_id)

Select f.* from Facturas, clientes where f.cli_id = c.cli_id and f.anio > (sysdate - 365) and f.cli_id is not null


a)Se ejecuta y trae lo pedido
b)Se ejecuta y no trae lo pedido
c)Se ejecuta pero posee un filtro redundante
d)Se ejecuta pero posee un filtro redundante y no trae lo pedido
e)No se ejecuta

(Las opciones no estaban en ese orden ni eran tal cual, pero para que tengan una idea)


Respuestas:
1) V. Bastante evidente.
2) F. También bastante evidente. Las vistas te dejan insertar siempre y cuando tengas permisos y cumplas las constraints de las tablas originales.
(En el 90% de los casos que ponen NUNCA, SIEMPRE son falsas =P)

La teoría nada loco, te podés explayar bastante en ambos temas.

La práctica.
El 3a) lo resolví con un union all, la parte de arriba traia todos los que tenian clientes y la de abajo todos los sin clientes. Bastante pavo también

3b) La respuesta era la c). El filtro is not null era redundante porque si ya habias joineado te evitas registros nulos ahí por c.cli_id es pk de cliente.

Me saqué 9 así que los V o F deben estar ok porque sino tendría máximo 8 (restan los V o F). Probablemente algún chamuyo de la teoría no les gustó o algún error de sintaxis en el 3a, pero por ahí andan las respuestas gente.

Saludos y buen final de año!
21-12-2016 17:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] luchotc recibio 1 Gracias por este post
CarooLina (21-12-2016)
rovila Sin conexión
Empleado del buffet
sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 16
Agradecimientos dados: 40
Agradecimientos: 6 en 3 posts
Registro en: Feb 2011
Mensaje: #2
RE: [APORTE] FINAL GDD 20/12/2016
Hola!
Estaría bien el 3a:


select nombre, importe, cli_id
from cliente c, factura f
where f.cli_id = c.cli_id
and f.anio > (sysdatetime - 365)
and cli_id is not null
union
select nombre, importe, isnull(cli_id, 'sin cliente')
from cliente c, factura f
where f.cli_id = c.cli_id
and f.anio > (sysdatetime - 365)
and cli_id is null

11-02-2017 07:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.