Gib natürlichsprachlich wieder, wonach folgende SQL-Anfrage sucht:
Hinweis: Der Operator table sample bernoulli (n)
ist IBM UDB-spezifisch und wählt zufällig n % Tupel der Ergebnismenge aus.
select *
from actors as a where a.movie_id in
( select distinct m.MID
from movies as m
tablesample bernoulli (0.10)
inner join genre as g on g.movie_id = m.mid
where g.genre not like ’%Adult%’
union
select a.movie_id as mid
from actors as a
tablesample bernoulli (0.01)
inner join producers as p on p.name = a.name
where a.movie_id = p.movie_id
)
union
select *
from actors as a
tablesample bernoulli (2)
Gib zusätzlich an, ob Tupel doppelt ausgegeben werden und begründe deine Antwort!
Solution
Wähle zufällig 0.01% der Schauspieler, die gleichzeitig Schauspieler und Produzent eines Films sind.
Wähle außerdem 0.1% aller Schauspieler, die in mindestens einem Film mitgespielt haben, der kein "adult-only" Film ist.
Vereinige die beiden Schauspielergruppen und wähle davon 2% der Schauspieler zufällig aus.
Da
union
die Mengensemantik nutzt, können keine Tupel doppelt ausgegeben werden.
HPI, 2015-06-01, Datenbanksysteme 1, Aufgabe 3.4b
2015-07-27 08:51:42 UTC
2015-07-27 08:51:42 UTC