Beruflich Dokumente
Kultur Dokumente
Hombre
Tabla de nombres y edades de Hombres
Mujer
Tabla de nombres y edades de Mujeres
HombreGusta Tablas con los nombres de mujeres y
hombr
Ej (Mara, Jos) a
Mara le gusta Jos.
MG ( NM, NH)
.
MA( NM, NH)
MujerGusta .
Matrimonios .
Casadas:
Solteras
Casados:
Solteros
MC
MS
HC
HS
into
into
into
into
into
into
into
into
"H"
"H"
"H"
"H"
"H"
"H"
"H"
"H"
("NH","Edad")
("NH","Edad")
("NH","Edad")
("NH","Edad")
("NH","Edad")
("NH","Edad")
("NH","Edad")
("NH","Edad")
values
values
values
values
values
values
values
values
('Mariano','32')
('Emanuel','28')
('Juan','30')
('Lautaro','30')
('Leandro','27')
('Julio','27')
('Franco','28')
('Gonzalo','32')
into
into
into
into
into
into
into
into
"M"
"M"
"M"
"M"
"M"
"M"
"M"
"M"
("NM","Edad")
("NM","Edad")
("NM","Edad")
("NM","Edad")
("NM","Edad")
("NM","Edad")
("NM","Edad")
("NM","Edad")
values
values
values
values
values
values
values
values
('Merli','27')
('Jaque','28')
('Julia','30')
('Ana','30')
('Maria','28')
('Marcia','27')
('Lyla','32')
('Romina','32')
into
into
into
into
into
"HG"
"HG"
"HG"
"HG"
"HG"
("NM","NH")
("NM","NH")
("NM","NH")
("NM","NH")
("NM","NH")
values
values
values
values
values
('Merli','Mariano')
('Jaque','Emanuel')
('Julia','Juan')
('Ana','Lautaro')
('Maria','Leandro')
into
into
into
into
"MA"
"MA"
"MA"
"MA"
("NM","NH")
("NM","NH")
("NM","NH")
("NM","NH")
values
values
values
values
('Merli','Mariano')
('Jaque','Emanuel')
('Julia','Juan')
('Ana','Lautaro')
1.
NH
Mariano
Emanuel
Juan
2.
3.
4.
NH
Lautaro
5.
NH
Goku
6.
Hombres casados a los que le gusta una mujer casada que no sea la suya
insert into "HG" ("NM","NH") values ('Julia','Mariano')
select "HC"."NH" from "HC"
inner join "HG"
on "HC"."NH" = "HG"."NH"
inner join "MA"
on "HG"."NM" = "MA"."NH"
ver de esta forma
select "HC"."NH" from "HC"
inner join "HG"
on "HC"."NH" = "HG"."NH"
inner join "MA"
on "HG"."NM" = "MA"."NM"
Mariano
Mariano
Lautaro
Emanuel
Juan
7.
e 30.
Mujeres casadas de ms de 40 aos a las que les gusta algn soltero de menos d
//inserto datos a la tabla "M":
insert into "M"("NM","Edad") values ('Celia','41')
//Agrego columna "MC" Edad
alter table "MC" add column "Edad" int
//inserto datos a la tabla "H":
insert into "H"("NH","Edad") values ('Coco','39')
//inserto a la tabla "MA":
insert into "MA"("NM","NH") values ('Celia','Coco')
//inserto en la tabla "MG":
insert into "MG"("NH","NM") values ('Leandro','Celia')
insert into "MG"("NH","NM") values ('Julio','Celia')
insert into "MG"("NH","NM") values ('Franco','Celia')
//asi da la subconsulta si preguntamos por todas
8.
Hombres casados a los que le gusta una mujer casada de menos de 20 aos.
"Mariano
"Mariano
"Lautaro
"Lautaro
"Lautaro
"Emanuel
"Juan
insert into "HG"("NM","NH") values ('Maria','Mariano')
select DISTINCT "HC"."NH" from "HC"
inner join "HG"
on "HC"."NH" = "HG"."NH"
inner join "MC"
on "HG"."NM" = "MC"."NM"
WHERE "HC"."NH" NOT IN
(SELECT
"HC"."NH"
FROM
public."HC",
public."HG",
public."MS"
WHERE
"HC"."NH" = "HG"."NH" AND
"HG"."NM" = "MS"."NM");
OTRA FORMA
select DISTINCT "HC"."NH" from "HC"
inner join "HG"
on "HC"."NH" = "HG"."NH"
inner join "MC"
on "HG"."NM" = "MC"."NM"
EXCEPT
(SELECT
"HC"."NH"
FROM
public."HC",
public."HG",
public."MS"
WHERE
"HC"."NH" = "HG"."NH" AND
"HG"."NM" = "MS"."NM");
//tambien puede ser asi: pero tengo q agragar una columna a "HC" "Edad"
alter table "HC" add column "Edad" int
select * from "HC"
except
select * from "MC"
"Coco
"Mariano
"Emanuel
"Hugo
"Juan
"Lautaro
10.
40.
11.
Mujeres solteras a las que les gustan hombres casados a los que les gust
an mujeres solteras.
select "MS"."NM" from "MS"
inner join "MG"
on "MS"."NM" = "MG"."NM"
inner join "MA"
on "MG"."NH" = "MA"."NH"
Resultado= Maria ("MS") por que gusta de Mariano ("HC")
12.
Mujeres solteras a las que slo les gustan hombres casados a los que les g
ustan mujeres soleras.
select "MS"."NM" from "MS"
inner join "MG"
on "MS"."NM" = "MG"."NM"
inner join "HC"
on "MG"."NH" = "HC"."NH"
13.
Mujeres solteras a las que slo les gustan hombres casados a los que slo le
s gustan mujeres soleras.
14.
Mujeres solteras a las que les gustan hombres a los que ellas no gustan.
15.
an.
Mujeres solteras a las que slo les gustan hombres a los que ellas no gust
16.
Mujeres solteras de menos de 30 a las que a las que les gustan hombres s
olteros y ningn casado.
17.
Mujeres casadas a las que les gustan hombres casados pero no el suyo.
18.
.
Hombres a los que les gustan todas las mujeres casadas y ninguna soltera
19.
Mujeres solteras a las que les gustan todos los casados a los que les gu
stan todas las solteras.
20.
Hombres casados a los que les gustan todas las casadas menos su mujer.
21.
Mujeres a las que les gustan todos los hombres 10 aos ms jvenes que ellas.
SELECT DISTINCT
"M"."NM",
"M"."Edad",
"H"."NH",
"H"."Edad"
FROM
public."H",
public."M",
public."MG"
WHERE
"M"."NM" = "MG"."NM" AND
"MG"."NH" = "H"."NH";
resultado
"Romina
"Julia
"Merli
"Lyla
"Jaque
";32;"Gonzalo
";30;"Juan
";27;"Mariano
";32;"Franco
";28;"Emanuel
";32
";30
";32
";28
";28
";32;"Gonzalo
";30;"Juan
";27;"Mariano
";30;"Pedro
";32;"Ariel
";32;"Franco
";32;"Ariel
";28;"Emanuel
";32
";30
";32
";20
";22
";28
";22
";28
"H"."Edad"
FROM
public."H",
public."M",
public."MG"
WHERE
"M"."NM" = "MG"."NM" AND
"MG"."NH" = "H"."NH" AND
"M"."Edad" >= "H"."Edad" + 10
"Julia
"Lyla
"Romina
22.
";30;"Pedro
";32;"Ariel
";32;"Ariel
";20
";22
";22
SELECT
"HG"."NH" FROM public."HG"
GROUP BY "NH"
HAVING COUNT("NH") >3
23.
24.
SELECT "H"."NH",
WHERE "Edad" =
"H"."Edad" FROM
public."H"
public."H" )
UN EJEMPLO DE DIVISION
SELECT * FROM "MG";
"Mariano
";"Merli
"
"Emanuel
"Juan
"Gonzalo
"Franco
"Pedro
"Ariel
"Ariel
";"Jaque
";"Julia
";"Romina
";"Lyla
";"Julia
";"Romina
";"Lyla
"
"
"
"
"
"
"
"
"
"
"
entoces inserto 3 nuevos asi puedo obtener una mujer que le guste todos los solt
eros
insert into "MG" ("NH","NM") values ('Julio','Romina');
insert into "MG" ("NH","NM") values ('Leandro','Romina');
insert into "MG" ("NH","NM") values ('Franco','Romina');
HACEMOS LOS EJEMPLOS DE DIVISION A/B
A ES MG MUJER GUSTA Y B ES HOMBRE SOLTEROS
ENTONCES:
1)
SELECT DISTINCT x
FROM A
EXCEPT SELECT x FROM
(SELECT x, y FROM
( SELECT x FROM A ) as C,
( SELECT y FROM B ) as D
EXCEPT
SELECT x, y FROM A ) as E
SELECT DISTINCT "NM" FROM "MG"
EXCEPT
SELECT "NM" FROM
( SELECT "NM","NH" FROM
(SELECT "NM" FROM "MG" ) AS C,
(SELECT "NH" FROM "HS") AS D
EXCEPT
SELECT "NM","NH" FROM "MG") AS E
2)
SELECT DISTINCT x FROM A as H
4)
SELECT DISTINCT x
FROM A, B
WHERE A.y = B.y
GROUP BY A.x
HAVING COUNT(DISTINCT A.y) =
( SELECT COUNT(DISTINCT y)
SELECT DISTINCT "NM" FROM "MG", "HS"
WHERE "MG"."NH" = "HS"."NH"
GROUP BY "MG"."NM"
HAVING COUNT(DISTINCT "MG"."NH")=
( SELECT COUNT(DISTINCT "NH" ) FROM "HS" )
FROM B)