Databasteknik: Lösningar till teoriövning 4

Uppgift 1

...

Uppgift 2

a) select Längd from Maskar where ID = 2;
b) select * from Maskar where Längd = 12;
c) select Namn from Maskar where Längd > 12;
d) select Namn from Maskar where Längd between 11 and 12;
e) select * from Maskar where Namn like 'B%';
f) select * from Maskar where Namn like '%b';
g) select * from Maskar where Namn like '%r%';
h) select Längd from Maskar where Namn = 'Bengt' or Namn = 'Kurt';
i) select * from Maskar where Längd >= 13 and Namn like 'B%';
j) select * from Maskar where Längd is null;
k) select * from Maskar where Längd is not null;
l) select * from Maskar where BorI = 2 and Längd is not null;
m) select VäxerPå from Äpplen where Färg = 'Rött';
n) select Färg from Äpplen where VäxerPå = 2;

Några alternativ:

d) select Namn from Maskar where Längd >= 11 and Längd <= 12;
h) select Längd from Maskar where Namn in ('Bengt', 'Kurt');
k) select * from Maskar where not Längd is null;

Uppgift 3

Flera olika sätt att skriva var och en av frågorna:

a) Vad heter de maskar som bor i röda äpplen?

select Namn
from Maskar, Äpplen
where Maskar.BorI = Äpplen.ID
and Äpplen.Färg = 'Rött';

select Namn
from Maskar, Äpplen
where BorI = Äpplen.ID
and Färg = 'Rött';

select Namn
from Äpplen, Maskar
where Äpplen.ID = BorI
and Färg = 'Rött';

select Maskar.Namn
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
where Äpplen.Färg = 'Rött';

select Namn
from Maskar
where BorI in (select ID
               from Äpplen
               where Färg = 'Rött');
b) Vad är det för färg på äpplet som masken Max bor i?
select Äpplen.Färg
from Maskar, Äpplen
where Maskar.BorI = Äpplen.ID
and Maskar.Namn = 'Max';

select Äpplen.Färg
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
where Maskar.Namn = 'Max';

select Färg
from Äpplen
where ID in (select BorI
             from Maskar
             where Namn = 'Max');
c) Vad heter de maskar som är längre än 12 centimeter och bor i röda äpplen?
select Namn
from Maskar, Äpplen
where Maskar.BorI = Äpplen.ID
and Längd > 12
and Färg = 'Rött';

select Namn
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
where Längd > 12
and Färg = 'Rött';

select Namn
from Maskar
where Längd > 12
and BorI in (select ID
             from Äpplen
             where Färg = 'Rött');
d) Vad heter de maskar som bor i träd som är minst 12 meter höga?
select Namn
from Maskar, Äpplen, Träd
where Maskar.BorI = Äpplen.ID
and Äpplen.VäxerPå = Träd.ID
and Träd.Höjd >= 12;

select Namn
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
join Träd on Äpplen.VäxerPå = Träd.ID
where Träd.Höjd >= 12;

select Namn
from Maskar
where BorI in (select ID
               from Äpplen
               where VäxerPå in (select ID
                                 from Träd
                                 where Höjd >= 12));
e) Hur högt är trädet som masken Kurt bor i?
select Träd.Höjd
from Maskar, Äpplen, Träd
where Maskar.BorI = Äpplen.ID
and Äpplen.VäxerPå = Träd.ID
and Maskar.Namn = 'Kurt';

select Maskar.Namn, Äpplen.Färg, Träd.Höjd
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
join Träd on Äpplen.VäxerPå = Träd.ID
where  Maskar.Namn = 'Kurt';

select Höjd
from Träd
where ID in (select VäxerPå
             from Äpplen
             where ID in (select BorI
                          from Maskar
                          where Namn = 'Kurt'));

Uppgift 4

Några olika sätt att skriva sökningen:
select Maskar.Namn, Äpplen.Färg, Träd.Höjd
from Maskar, Äpplen, Träd
where Maskar.BorI = Äpplen.ID
and Äpplen.VäxerPå = Träd.ID;

select Maskar.Namn as Mask, Äpplen.Färg as Äppelfärg, Träd.Höjd as Trädhöjd
from Maskar, Äpplen, Träd
where Maskar.BorI = Äpplen.ID
and Äpplen.VäxerPå = Träd.ID;

select Maskar.Namn, Äpplen.Färg, Träd.Höjd
from Maskar join Äpplen on Maskar.BorI = Äpplen.ID
join Träd on Äpplen.VäxerPå = Träd.ID;


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 15 november 2022