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:
buuuuuuuu, eso lo hice ern 5 minutos ....
Publicar un comentario