Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Final Gestion de datos 19/07/2011
Autor Mensaje
dolap87 Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 29
Agradecimientos dados: 28
Agradecimientos: 5 en 2 posts
Registro en: Feb 2009
Mensaje: #1
Final Gestion de datos 19/07/2011 Finales Gestión de Datos
Buenas gente subo el final de GDD del 19/07/2011 con mi resolucion para aportar/corregir.
Slds

Mi resolución (me saqué 8):

1.a) nunca lo probe pero creo que es VERDADERO

1.b) VERDADERO

---

2.a)

- Una tabla en la que se hagan muchos insert, update, delete y pocos select.
- Si el índice está en una columna de la tabla que nunca se usa en WHERE, ORDER BY, etc.

2.b)

Transacciones: Es un conjunto de sentencias que se ejecutan atomicamente. Permiten mantener de la DB en estado correcto partiendo de un estado correcto. Asegurando que el la operacion se ejecuta completa o falle dejando todo como estaba de un principio.
Las directivas que provee el DBMS son:
Begin Transaction
commit
rollback
Se da comienzo a la transaccion luego de la sentencia Begin transaction, a partir de la misma comienza la ejecucion atomica hasta que se cierre con un rollback (en caso de que alla ocurrido un error para volver al punto de partida antes de q se comience a ejecutar la transaccion) o con un commit (en el caso exitoso para confirmar los cambios efectuados dentro de la transaccion)


---

3)

select p1.nombre,isnull(p2.nombre,'sin hermano')
from persona p1 left outer join persona p2 on (p1.madre=p2.madre )
where p1.id!=p2.id and p1.id<p2.id

no me aparecen los que no tienen hermanos, alguna solucion??

4)
create trigger mf on persona
after insert,update
begin transaction
if exists(select id from persona where sexo='F' and id in (select distinct padre from persona))
begin
rollback transaction
raiserror ("Se encontro una persona que no condice con el genero asignado")
end

if exists(select id from persona where sexo='M' and id in (select distinct madre from persona))
begin
rollback transaction
raiserror ("Se encontro una persona que no condice con el genero asignado")
end
commit transaction


Archivo(s) adjuntos Imagen(es)
   
23-05-2012 17:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] dolap87 recibio 3 Gracias por este post
Santz (19-07-2012), groklee (15-02-2013), CarooLina (08-02-2018)
CarooLina Sin conexión
Colaborador

********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.700
Agradecimientos dados: 1.418
Agradecimientos: 1.481 en 526 posts
Registro en: Sep 2010
Mensaje: #2
RE: Final Gestion de datos 19/07/2011
Lo mas cerca que estuve a resolverlo, no se me ocurrio todavia otra cosa.
El problema: si son hnos por que comparten padre y madre a la vez, aparece una vez mas (uno de ellos) como si no tuviera hnos.


create table familia(
id varchar(2), padre varchar(2), madre varchar(1) )

insert into familia(id,madre) values('L','M')
insert into familia values ('A','P','M')
insert into familia(id,padre,madre) values ('R','P','M')
insert into familia(id,padre) values ('C','P')
insert into familia(id,padre) values ('Y','Z')
insert into familia(id) values ('M')
insert into familia(id) values ('P')
insert into familia(id) values ('Z')

select h.id,isnull(h2.id,'sin hnos')
from familia as h left join familia as h2 on ( (h2.madre=h.madre or h2.padre=h.padre ) and h2.id>h.id )



love
(Este mensaje fue modificado por última vez en: 14-02-2018 10:58 por CarooLina.)
14-02-2018 10:48
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
ramiro99 Sin conexión
Empleado del buffet
Con estado :)
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 10
Agradecimientos: 11 en 5 posts
Registro en: Feb 2011
Mensaje: #3
RE: Final Gestion de datos 19/07/2011


SELECT H1.NOMBRE AS NOMBREPERSONA, ISNULL(H2.NOMBRE,'SIN HERMANOS') AS NOMBREHERMANO
FROM Persona H1
JOIN Persona H2
ON H1.ID < H2.ID
AND (H1.MADRE = H2.MADRE OR H1.PADRE = H2.PADRE)
UNION
SELECT NOMBRE AS NOMBREPERSONA, 'SIN HERMANOS' AS NOMBREHERMANO FROM Persona WHERE ID NOT IN (SELECT H1.ID
FROM Persona H1
LEFT JOIN Persona H2
ON (H1.MADRE = H2.MADRE OR H1.PADRE = H2.PADRE)
WHERE H1.ID <> H2.ID);


La única manera en la que pude resolverlo fue así, pero seguro hay otra forma menos cochina de resolverlo...

Spoiler: Mostrar
Im not proud of it, but it works...
14-02-2018 15:34
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] ramiro99 recibio 1 Gracias por este post
CarooLina (14-02-2018)
CarooLina Sin conexión
Colaborador

********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3.700
Agradecimientos dados: 1.418
Agradecimientos: 1.481 en 526 posts
Registro en: Sep 2010
Mensaje: #4
RE: Final Gestion de datos 19/07/2011
ramiro99 hola! Gracias por ayuda

love
(Este mensaje fue modificado por última vez en: 14-02-2018 16:07 por CarooLina.)
14-02-2018 15:46
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Trisky Sin conexión
Militante
??
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 99
Agradecimientos dados: 99
Agradecimientos: 49 en 28 posts
Registro en: Dec 2011
Mensaje: #5
RE: Final Gestion de datos 19/07/2011
(14-02-2018 15:34)ramiro99 escribió:  


SELECT H1.NOMBRE AS NOMBREPERSONA, ISNULL(H2.NOMBRE,'SIN HERMANOS') AS NOMBREHERMANO
FROM Persona H1
JOIN Persona H2
ON H1.ID < H2.ID
AND (H1.MADRE = H2.MADRE OR H1.PADRE = H2.PADRE)
UNION
SELECT NOMBRE AS NOMBREPERSONA, 'SIN HERMANOS' AS NOMBREHERMANO FROM Persona WHERE ID NOT IN (SELECT H1.ID
FROM Persona H1
LEFT JOIN Persona H2
ON (H1.MADRE = H2.MADRE OR H1.PADRE = H2.PADRE)
WHERE H1.ID <> H2.ID);


La única manera en la que pude resolverlo fue así, pero seguro hay otra forma menos cochina de resolverlo...

Spoiler: Mostrar
Im not proud of it, but it works...

Lo hice sin mirar tu respuesta y llegué a lo mismo que vos jaja, nos vemos en un rato =P
14-02-2018 15:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
MatiPetrilli Sin conexión
Empleado del buffet
No esta muerto quien pelea.
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 8
Agradecimientos dados: 10
Agradecimientos: 8 en 3 posts
Registro en: Dec 2012
Twitter
Mensaje: #6
RE: Final Gestion de datos 19/07/2011
Buenas, les dejo mis resoluciones sobre el ejercicio practico, si ven algún error les agradezco que me lo digan asi lo vemos. Saludos

--PARTE A
SELECT P1.NOMBRE AS PERSONA, P2.NOMBRE AS HERMANO FROM PERSONA P1 INNER JOIN PERSONA P2 ON P1.ID=P2.ID
WHERE (P1.PADRE = P2.PADRE AND P1.PADRE IS NOT NULL) OR (P1.MADRE = P2.MADRE AND P1.MADRE IS NOT NULL) AND P1.ID <> P2.ID
UNION SELECT DISTINCT(P.NOMBRE) AS PERSONA, 'SIN HERMANOS' FROM PERSONA P WHERE P.PADRE IS NULL OR P.MADRE IS NULL

--PARTE B

CREATE TRIGGER SEXO_PERSONAS ON PERSONAS
AFTER INSERT, UPDATE
AS
BEGIN

UPDATE PERSONA
SET SEXO = 'M'
WHERE ID IN (SELECT P1.ID FROM PERSONA P1 WHERE P1.ID IN (SELECT P2.PADRE FROM PERSONA P2 ) AND P1.SEXO <> 'M')


UPDATE PERSONA
SET SEXO = 'M'
WHERE ID IN (SELECT P1.ID FROM PERSONA P1 WHERE P1.ID IN (SELECT P2.MADRE FROM PERSONA P2 ) AND P1.SEXO <> 'F')

END
06-06-2018 18:04
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.