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:

  1. Alle sjangere i tabellen Genre (28)
  2. Filmid og tittel for alle filmer utgitt i 1892 (12)
  3. Filmid og tittel for alle filmer der filmid er mellom 2000 og 2030 (14)
  4. Filmid og tittel p? alle filmer med Star Wars i navnet (129)
  5. Fornavn og etternavn til personid 465221 (1)
  6. Alle unike rolletyper (parttype) i tabellen Filmparticipation (7)
  7. Tittel og produksjons?r for alle filmer som inneholder ordene ?Rush Hour? (15)
  8. Vis filmid, navn og produksjons?r for filmer som inneholder ordet ?Norge? (27)
  9. Vis filmid for kinofilmer som har filmtittelen Love (kinofilmer har filmtype ?C?) (42)
  10. 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:

  1. Filmid og filmtype (fra Filmitem) for alle filmer som ble produsert i 1894 (82)
  2. 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
);