miércoles, 3 de octubre de 2007

Un query que funciona en ORACLE


 


 


 

Modelo de datos: Una persona puede tener una o muchas mascotas.


 

CREATE TABLE PERSONA(


ID NUMBER NOT NULL PRIMARY KEY,


NOMBRE VARCHAR2(100)

)


 

CREATE TABLE MASCOTA (


ID NUMBER NOT NULL PRIMARY KEY,


ID_PERSONA NUMBER REFERENCES PERSONA (ID),


EDAD NUMBER,


NOMBRE VARCHAR2(100)

)


 

--Poblar la tabla Personas

INSERT INTO PERSONA(ID,NOMBRE) VALUES ( 1,'Ronal');

INSERT INTO PERSONA(ID,NOMBRE) VALUES ( 2,'Mauricio');

INSERT INTO PERSONA(ID,NOMBRE) VALUES ( 3,'Luisca');


 

--Poblar la tabla mascotas

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 1, 1, 13,'osa');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 2, 1, 5,'karen');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 10, 2, 20,'Tata');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 11, 2, 7,'Conguito');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 3, 1, 2,'Sapito');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 20, 3, 3,'Piojo');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 21, 3, 3,'Pioja');

INSERT INTO MASCOTA(ID,ID_PERSONA,EDAD,NOMBRE) VALUES ( 22, 3, 3,'liendra');


 

--Ejecutar el query que saca las mascotas mas jóvenes por persona

SELECT

    P.ID AS ID_PERSONA

    ,P.NOMBRE AS NOMBRE_PERSONA

    ,M.ID AS ID_MASCOTA

    ,M.NOMBRE AS NOMBRE_MASCOTA

    ,M.EDAD AS EDAD

FROM     

    MASCOTA M

    INNER JOIN PERSONA P ON (M.ID_PERSONA = P.ID)

WHERE

    M.EDAD = (

     SELECT MIN(MH.EDAD)

     FROM     MASCOTA MH

     WHERE MH.ID_PERSONA = P.ID

    )

ORDER BY

    ID_PERSONA, ID_MASCOTA


 

--El resultado es el siguiente

ID_PERSONA

NOMBRE_PERSONA

ID_MASCOTA

NOMBRE_MASCOTA

EDAD

1

Ronal

3

Sapito

2

2

Mauricio

11

Conguito

7

3

Luisca

20

Piojo

3

3

Luisca

21

Pioja

3

3

Luisca

22

Liendra

3

1 comentario:

Unknown dijo...

buuuuuuuu, eso lo hice ern 5 minutos ....