IN2090-ukesoppgaver: Uke 5
Grunnleggende SQL
Alle oppgavene for denne uken l?ses ved bruk av filmdatabasen (se guiden p? semestersiden for hvordan du kobler deg til den). Tallene som er i parentes indikerer forventet antall rader fra sp?rringen.
Oppgave 1 - Enkle SELECT-setninger
Skriv en sp?rring som finner:
- Alle sjangere i tabellen Genre (28)
- Filmid og tittel for alle filmer utgitt i 1892 (12)
- Filmid og tittel for alle filmer der filmid er mellom 2000 og 2030 (14)
- Filmid og tittel p? alle filmer med Star Wars i navnet (129)
- Fornavn og etternavn til personid 465221 (1)
- Alle unike rolletyper (parttype) i tabellen Filmparticipation (7)
- Tittel og produksjons?r for alle filmer som inneholder ordene ?Rush Hour? (15)
- Vis filmid, navn og produksjons?r for filmer som inneholder ordet ?Norge? (27)
- Vis filmid for kinofilmer som har filmtittelen Love (kinofilmer har filmtype ?C?) (42)
- Hvor mange filmer i filmdatabasen er norske?
L?sningsforslag
1
SELECT *
FROM Genre;
/*
genre
-------------
Action
Adult
Adventure
Animation
Biography
Comedy
Crime
Documentary
Drama
Family
Fantasy
Film-Noir
Game-Show
History
Horror
Music
Musical
Mystery
News
Reality-TV
Romance
Sci-Fi
Short
Sport
Talk-Show
Thriller
War
Western
(28 rows)
*/
2
SELECT f.filmid, f.title
FROM film AS f
WHERE f.prodyear = 1892;
/*
filmid | title
---------+-------------------------
436251 | Clown et ses chiens, Le
700124 | Clown and His Dogs, The
954426 | Boxing
1394843 | Pauvre Pierrot
1874971 | Un bon bock
2286076 | Poor Pierrot
2320346 | Fencing
2887002 | Hand Shake, A
3086012 | Good Beer, A
3111303 | Man on Parallel Bars
3111751 | Wrestling
5500730 | Prince de Galles, Le
(12 rows)
*/
3
SELECT f.filmid, f.title
FROM film AS f
WHERE f.filmid >= 2000 AND f.filmid <= 2030;
/*
filmid | title
-------+--------------------------------------------------------
2001 | Bowling Balls
2003 | Musta rakkaus
2004 | Espantalho
2006 | Northern Lights
2010 | 'Cannibal Apocalypse' Redux
2017 | Chronicles of the Dark Carnival, The
2018 | Oral Majority 3
2019 | Nainen on valttia
2020 | Cidade Oculta
2021 | Highlander: Endgame
2022 | Animales devoradores: El hombre
2023 | Blood Red Planet
2024 | Pura vida Ibiza
2026 | 'Capulina contra las momias' (El terror de Guanajuato)
(14 rows)
*/
4
SELECT f.title, f.filmid
FROM Film AS f
WHERE f.title LIKE '%Star Wars%';
/*
title | filmid
----------------------------------------------------------------+---------
'Star Wars' Holiday Special, The | 7450
'Star Wars': A Musical Journey | 7466
'Star Wars': Feel the Force | 7482
Star Wars: Rebel Assault | 47911
Star Wars: Revelations | 62417
Star Wars: Jedi Knight - Dark Forces II | 127428
Star Wars: Episode I - The Phantom Menace | 127652
...
(129 rows)
*/
5
SELECT p.firstname, p.lastname
FROM Person AS p
WHERE p.personid = 465221;
/*
firstname | lastname
----------+----------
Johnny | Depp
(1 row)
*/
6
SELECT DISTINCT parttype
FROM filmparticipation;
/*
parttype
------------------
writer
costume designer
director
editor
cast
composer
producer
(7 rows)
*/
7
SELECT f.title, f.prodyear
FROM film AS f
WHERE f.title LIKE '%Rush Hour%';
/*
title | prodyear
----------------------------------------------------------+----------
Rush Hour | 1941
Rush Hour | 1998
Reel Comedy: Rush Hour 2 | 2001
Rush Hour 3 | 2007
Rush Hour | 2006
Rush Hour 2 | 2001
Rush Hour, The | 1974
Sto?zeit - Rush Hour | 1970
Rush Hour, The | 1928
SimCity 4: Rush Hour | 2003
Rush Hour - Due mine vaganti | 2000
Colpo grosso al drago rosso - Rush Hour 2 | 2002
Piece of the Action: Behind the Scenes of 'Rush Hour', A | 1999
Rush Hour | 1970
Reel Comedy: Rush Hour | 1998
(15 rows)
*/
8
SELECT filmid, title, prodyear
FROM film
WHERE title LIKE '%Norge%';
9
SELECT fi.filmid
FROM filmitem fi
INNER JOIN film f ON f.filmid = fi.filmid
WHERE fi.filmtype = 'C' AND f.title = 'Love';
10
SELECT COUNT(*) AS antallNorskeFilmer
FROM Film JOIN Filmcountry USING (filmid)
WHERE country = 'Norway';
eller, evt. bare:
SELECT COUNT(*) AS antallNorskeFilmer
FROM Filmcountry
WHERE country = 'Norway';
Merk at IMDB-datasettet har et litt tvetydig spr?k, det bruker nemlig
ordet “film” om alt, ogs? serier, spill, osv. Tabellen Film
inneholder derimot kun filmer i ordets rette forstand, mens
Filmcountry
inneholder land til alt den har i databasen
(alts? ogs? serier, osv.). De to l?sningsforslagene er begge riktige,
avhengig av hvilken tolkning av ordet “film” man bruker.
Oppgave 2 - Nestede setninger:
Skriv en sp?rring som bruker nestede-sp?rringer for ? finne:
- Filmid og filmtype (fra Filmitem) for alle filmer som ble produsert i 1894 (82)
- Navn p? alle kvinnelige skuespillere (cast) i filmen med filmid 357076 (11)
L?sningsforslag
1
SELECT *
FROM Filmitem AS fi
WHERE fi.filmid IN (
SELECT f.filmid
FROM Film AS f
WHERE f.prodyear = 1894
);