diff --git a/query1.sql b/query1.sql new file mode 100644 index 0000000..f7b9c2b --- /dev/null +++ b/query1.sql @@ -0,0 +1,4 @@ +-- Show the title and director name for all films +SELECT f.title, p.name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people p ON p.id = d.person_fk \ No newline at end of file diff --git a/query10.sql b/query10.sql new file mode 100644 index 0000000..4d3365b --- /dev/null +++ b/query10.sql @@ -0,0 +1,2 @@ +SELECT p.name FROM people p +WHERE dob = '1974-11-11' \ No newline at end of file diff --git a/query2.sql b/query2.sql new file mode 100644 index 0000000..af5dee7 --- /dev/null +++ b/query2.sql @@ -0,0 +1,10 @@ +-- Show the title, director and star name for all films +SELECT f.title, dir.name AS director_name, wri.name AS writer_name, sta.name AS star_name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people dir ON dir.id = d.person_fk + +LEFT JOIN writers w ON w.film_fk = f.id +LEFT JOIN people wri ON wri.id = w.person_fk + +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk \ No newline at end of file diff --git a/query3.sql b/query3.sql new file mode 100644 index 0000000..4b34ddc --- /dev/null +++ b/query3.sql @@ -0,0 +1,6 @@ +-- Show the title of films where the director is from the USA +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people p ON p.id = d.person_fk +LEFT JOIN countries c ON c.id = p.country_fk +WHERE c.countryname = 'USA' \ No newline at end of file diff --git a/query4.sql b/query4.sql new file mode 100644 index 0000000..4c87995 --- /dev/null +++ b/query4.sql @@ -0,0 +1,5 @@ +-- Show only those films where the writer and the director are the same person +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN writers w ON w.film_fk = f.id +WHERE w.person_fk = d.person_fk; \ No newline at end of file diff --git a/query5.sql b/query5.sql new file mode 100644 index 0000000..7089bbf --- /dev/null +++ b/query5.sql @@ -0,0 +1,5 @@ +-- Show directors and film titles for films with a score of 8 or higher +SELECT f.title, dir.name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people dir ON dir.id = d.person_fk +WHERE f.score > 7; diff --git a/query6.sql b/query6.sql new file mode 100644 index 0000000..3c26f8b --- /dev/null +++ b/query6.sql @@ -0,0 +1,4 @@ +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN writers w ON w.film_fk = f.id +WHERE NOT w.person_fk = d.person_fk; \ No newline at end of file diff --git a/query7.sql b/query7.sql new file mode 100644 index 0000000..466dcd8 --- /dev/null +++ b/query7.sql @@ -0,0 +1,2 @@ +SELECT f.title FROM films f +WHERE f.score > 8 AND f.year > 1985 \ No newline at end of file diff --git a/query8.sql b/query8.sql new file mode 100644 index 0000000..3775d48 --- /dev/null +++ b/query8.sql @@ -0,0 +1,4 @@ +SELECT f.title FROM films f +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk +WHERE sta.dob = '1974-11-11' \ No newline at end of file diff --git a/query9.sql b/query9.sql new file mode 100644 index 0000000..16e6958 --- /dev/null +++ b/query9.sql @@ -0,0 +1,4 @@ +SELECT sta.name FROM films f +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk +WHERE f.YEAR < 1980; \ No newline at end of file diff --git a/sql_queries v2.txt b/sql_queries v2.txt new file mode 100644 index 0000000..3c03e1e --- /dev/null +++ b/sql_queries v2.txt @@ -0,0 +1,75 @@ + +# Show the title and director name for all films +SELECT f.title, p.name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people p ON p.id = d.person_fk + + +# Show the title, director and star name for all films +SELECT f.title, dir.name AS director_name, wri.name AS writer_name, sta.name AS star_name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people dir ON dir.id = d.person_fk + +LEFT JOIN writers w ON w.film_fk = f.id +LEFT JOIN people wri ON wri.id = w.person_fk + +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk + + +# Show the title of films where the director is from the USA +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people p ON p.id = d.person_fk +LEFT JOIN countries c ON c.id = p.country_fk +WHERE c.countryname = 'USA' + + +# Show only those films where the writer and the director are the same person +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN writers w ON w.film_fk = f.id +WHERE w.person_fk = d.person_fk; + + +# Show directors and film titles for films with a score of 8 or higher +SELECT f.title, dir.name FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN people dir ON dir.id = d.person_fk +WHERE f.score > 7; + + +# Make at least 5 more queries to demonstrate your understanding of joins, and other relationships between tables. + +#6 +SELECT f.title FROM films f +LEFT JOIN directors d ON d.film_fk = f.id +LEFT JOIN writers w ON w.film_fk = f.id +WHERE NOT w.person_fk = d.person_fk; + +#7 +SELECT f.title FROM films f +WHERE f.score > 8 AND f.year > 1985 + +#8 +SELECT f.title FROM films f +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk +WHERE sta.dob = '1974-11-11' + +#9 +SELECT sta.name FROM films f +LEFT JOIN filmcast fc ON fc.film_fk = f.id +LEFT JOIN people sta ON sta.id = fc.person_fk +WHERE f.YEAR < 1980; + +#10 +SELECT p.name FROM people p +WHERE dob = '1974-11-11' + + + + + + +todo cast \ No newline at end of file diff --git a/sql_tables v2.txt b/sql_tables v2.txt new file mode 100644 index 0000000..ba8eac7 --- /dev/null +++ b/sql_tables v2.txt @@ -0,0 +1,148 @@ +-- tables + +CREATE TABLE People( +id serial PRIMARY KEY, +name VARCHAR (100) NOT NULL, +email VARCHAR (100), +country_fk INTEGER, +dob DATE +); + + + +CREATE TABLE Countries( +id serial PRIMARY KEY, +countryname VARCHAR (50) NOT NULL +); + + +CREATE TABLE Films( +id serial PRIMARY KEY, +title VARCHAR (200), +year INTEGER NOT NULL, +genre VARCHAR (50), +score INTEGER +); + +CREATE TABLE Directors( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL + +); + +CREATE TABLE Writers( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL +); + +CREATE TABLE FilmCast( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL +); + + +-- populate + +INSERT into countries (countryname) VALUES ('USA'); +INSERT into countries (countryname) VALUES ('UK'); +INSERT into countries (countryname) VALUES ('Canada'); +INSERT into countries (countryname) VALUES ('Greece'); +INSERT into countries (countryname) VALUES ('Netherlands'); +INSERT into countries (countryname) VALUES ('Poland'); +INSERT into countries (countryname) VALUES ('France'); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Stanley Kubrick', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('George Lucas', 'george@email.com', 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Robert Mulligan', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('James Cameron', 'james@cameron.com', 3, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('David Lean', NULL, 2, NULL); + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Anthony Mann', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Theodoros Angelopoulos', 'theo@angelopoulos.com', 4, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Paul Verhoeven', NULL, 5, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Krzysztof Kieslowski', 'email@email.com', 6, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Jean-Paul Rappeneau', NULL, 7, NULL); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Keir Dullea', NULL, NULL, '1936-05-30'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Mark Hamill', NULL, NULL, '1951-09-25'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Gregory Peck', NULL, NULL, '1916-04-05'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Leonardo DiCaprio', NULL, NULL, '1974-11-11'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Julie Christie', NULL, NULL, '1940-04-14'); + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Charlton Heston', NULL, NULL, '1923-10-04'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Manos Katrakis', NULL, NULL, '1908-08-14'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Rutger Hauer', NULL, NULL, '1944-01-23'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Juliette Binoche', NULL, NULL, '1964-03-09'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Gerard Depardieu', NULL, NULL, '1948-12-27'); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Arthur C Clarke', 'arthur@clarke.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Harper Lee', 'harper@lee.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Boris Pasternak', 'boris@boris.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Frederick Frank', 'fred@frank.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Erik Hazelhoff Roelfzema', 'erik@roelfzema.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Edmon Rostand', 'edmond@rostand.com', NULL, NULL); + + +INSERT INTO films (title, year, genre, score) VALUES ('2001: A Space Odyssey', 1968, 'Science Fiction', 10); +INSERT INTO films (title, year, genre, score) VALUES ('Star Wars: A New Hope', 1977, 'Science Fiction', 7); +INSERT INTO films (title, year, genre, score) VALUES ('To Kill A Mockingbird', 1962, 'Drama', 10); +INSERT INTO films (title, year, genre, score) VALUES ('Titanic', 1997, 'Romance', 5); +INSERT INTO films (title, year, genre, score) VALUES ('Dr Zhivago', 1965, 'Historical', 8); + +INSERT INTO films (title, year, genre, score) VALUES ('El Cid', 1961, 'Historical', 6); +INSERT INTO films (title, year, genre, score) VALUES ('Voyage to Cythera', 1984, 'Drama', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Soldier of Orange', 1977, 'Thriller', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Three Colours: Blue', 1993, 'Drama', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Cyrano de Bergerac', 1990, 'Historical', 9); + +-- director table +INSERT INTO directors (film_fk, person_fk) VALUES (1, 1); +INSERT INTO directors (film_fk, person_fk) VALUES (2, 2); +INSERT INTO directors (film_fk, person_fk) VALUES (3, 3); +INSERT INTO directors (film_fk, person_fk) VALUES (4, 4); +INSERT INTO directors (film_fk, person_fk) VALUES (5, 5); + +INSERT INTO directors (film_fk, person_fk) VALUES (6, 6); +INSERT INTO directors (film_fk, person_fk) VALUES (7, 7); +INSERT INTO directors (film_fk, person_fk) VALUES (8, 8); +INSERT INTO directors (film_fk, person_fk) VALUES (9, 9); +INSERT INTO directors (film_fk, person_fk) VALUES (10, 10); + +-- writers table +INSERT INTO writers (film_fk, person_fk) VALUES (1, 11); +INSERT INTO writers (film_fk, person_fk) VALUES (2, 2); +INSERT INTO writers (film_fk, person_fk) VALUES (3, 22); +INSERT INTO writers (film_fk, person_fk) VALUES (4, 4); +INSERT INTO writers (film_fk, person_fk) VALUES (5, 23); +INSERT INTO writers (film_fk, person_fk) VALUES (6, 24); +INSERT INTO writers (film_fk, person_fk) VALUES (7, 7); +INSERT INTO writers (film_fk, person_fk) VALUES (8, 25); +INSERT INTO writers (film_fk, person_fk) VALUES (9, 9); +INSERT INTO writers (film_fk, person_fk) VALUES (10, 26); + +-- cast film +INSERT INTO filmcast (film_fk, person_fk) VALUES (1, 11); +INSERT INTO filmcast (film_fk, person_fk) VALUES (2, 12); +INSERT INTO filmcast (film_fk, person_fk) VALUES (3, 13); +INSERT INTO filmcast (film_fk, person_fk) VALUES (4, 14); +INSERT INTO filmcast (film_fk, person_fk) VALUES (5, 15); + +INSERT INTO filmcast (film_fk, person_fk) VALUES (6, 16); +INSERT INTO filmcast (film_fk, person_fk) VALUES (7, 17); +INSERT INTO filmcast (film_fk, person_fk) VALUES (8, 18); +INSERT INTO filmcast (film_fk, person_fk) VALUES (9, 19); +INSERT INTO filmcast (film_fk, person_fk) VALUES (10, 20); + + + + + + + + diff --git a/tables.sql b/tables.sql new file mode 100644 index 0000000..d356d04 --- /dev/null +++ b/tables.sql @@ -0,0 +1,171 @@ +-- tables + +CREATE TABLE People( +id serial PRIMARY KEY, +name VARCHAR (100) NOT NULL, +email VARCHAR (100), +country_fk INTEGER, +dob DATE +); + + + +CREATE TABLE Countries( +id serial PRIMARY KEY, +countryname VARCHAR (50) NOT NULL +); + + +CREATE TABLE Films( +id serial PRIMARY KEY, +title VARCHAR (200), +year INTEGER NOT NULL, +genre VARCHAR (50), +score INTEGER +); + +CREATE TABLE Directors( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL + +); + +CREATE TABLE Writers( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL +); + +CREATE TABLE FilmCast( +id serial PRIMARY KEY, +film_fk INTEGER NOT NULL, +person_fk INTEGER NOT NULL +); + + +-- populate + +INSERT into countries (countryname) VALUES ('USA'); +INSERT into countries (countryname) VALUES ('UK'); +INSERT into countries (countryname) VALUES ('Canada'); +INSERT into countries (countryname) VALUES ('Greece'); +INSERT into countries (countryname) VALUES ('Netherlands'); +INSERT into countries (countryname) VALUES ('Poland'); +INSERT into countries (countryname) VALUES ('France'); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Stanley Kubrick', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('George Lucas', 'george@email.com', 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Robert Mulligan', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('James Cameron', 'james@cameron.com', 3, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('David Lean', NULL, 2, NULL); + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Anthony Mann', NULL, 1, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Theodoros Angelopoulos', 'theo@angelopoulos.com', 4, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Paul Verhoeven', NULL, 5, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Krzysztof Kieslowski', 'email@email.com', 6, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Jean-Paul Rappeneau', NULL, 7, NULL); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Keir Dullea', NULL, NULL, '1936-05-30'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Mark Hamill', NULL, NULL, '1951-09-25'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Gregory Peck', NULL, NULL, '1916-04-05'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Leonardo DiCaprio', NULL, NULL, '1974-11-11'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Julie Christie', NULL, NULL, '1940-04-14'); + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Charlton Heston', NULL, NULL, '1923-10-04'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Manos Katrakis', NULL, NULL, '1908-08-14'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Rutger Hauer', NULL, NULL, '1944-01-23'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Juliette Binoche', NULL, NULL, '1964-03-09'); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Gerard Depardieu', NULL, NULL, '1948-12-27'); + + +INSERT INTO people (name, email, country_fk, dob) VALUES ('Arthur C Clarke', 'arthur@clarke.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Harper Lee', 'harper@lee.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Boris Pasternak', 'boris@boris.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Frederick Frank', 'fred@frank.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Erik Hazelhoff Roelfzema', 'erik@roelfzema.com', NULL, NULL); +INSERT INTO people (name, email, country_fk, dob) VALUES ('Edmon Rostand', 'edmond@rostand.com', NULL, NULL); + + +INSERT INTO films (title, year, genre, score) VALUES ('2001: A Space Odyssey', 1968, 'Science Fiction', 10); +INSERT INTO films (title, year, genre, score) VALUES ('Star Wars: A New Hope', 1977, 'Science Fiction', 7); +INSERT INTO films (title, year, genre, score) VALUES ('To Kill A Mockingbird', 1962, 'Drama', 10); +INSERT INTO films (title, year, genre, score) VALUES ('Titanic', 1997, 'Romance', 5); +INSERT INTO films (title, year, genre, score) VALUES ('Dr Zhivago', 1965, 'Historical', 8); + +INSERT INTO films (title, year, genre, score) VALUES ('El Cid', 1961, 'Historical', 6); +INSERT INTO films (title, year, genre, score) VALUES ('Voyage to Cythera', 1984, 'Drama', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Soldier of Orange', 1977, 'Thriller', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Three Colours: Blue', 1993, 'Drama', 8); +INSERT INTO films (title, year, genre, score) VALUES ('Cyrano de Bergerac', 1990, 'Historical', 9); + +-- director table +INSERT INTO directors (film_fk, person_fk) VALUES (1, 1); +INSERT INTO directors (film_fk, person_fk) VALUES (2, 2); +INSERT INTO directors (film_fk, person_fk) VALUES (3, 3); +INSERT INTO directors (film_fk, person_fk) VALUES (4, 4); +INSERT INTO directors (film_fk, person_fk) VALUES (5, 5); + +INSERT INTO directors (film_fk, person_fk) VALUES (6, 6); +INSERT INTO directors (film_fk, person_fk) VALUES (7, 7); +INSERT INTO directors (film_fk, person_fk) VALUES (8, 8); +INSERT INTO directors (film_fk, person_fk) VALUES (9, 9); +INSERT INTO directors (film_fk, person_fk) VALUES (10, 10); + +-- writers table +INSERT INTO writers (film_fk, person_fk) VALUES (1, 11); +INSERT INTO writers (film_fk, person_fk) VALUES (2, 2); +INSERT INTO writers (film_fk, person_fk) VALUES (3, 22); +INSERT INTO writers (film_fk, person_fk) VALUES (4, 4); +INSERT INTO writers (film_fk, person_fk) VALUES (5, 23); +INSERT INTO writers (film_fk, person_fk) VALUES (6, 24); +INSERT INTO writers (film_fk, person_fk) VALUES (7, 7); +INSERT INTO writers (film_fk, person_fk) VALUES (8, 25); +INSERT INTO writers (film_fk, person_fk) VALUES (9, 9); +INSERT INTO writers (film_fk, person_fk) VALUES (10, 26); + +-- cast film +INSERT INTO filmcast (film_fk, person_fk) VALUES (1, 11); +INSERT INTO filmcast (film_fk, person_fk) VALUES (2, 12); +INSERT INTO filmcast (film_fk, person_fk) VALUES (3, 13); +INSERT INTO filmcast (film_fk, person_fk) VALUES (4, 14); +INSERT INTO filmcast (film_fk, person_fk) VALUES (5, 15); + +INSERT INTO filmcast (film_fk, person_fk) VALUES (6, 16); +INSERT INTO filmcast (film_fk, person_fk) VALUES (7, 17); +INSERT INTO filmcast (film_fk, person_fk) VALUES (8, 18); +INSERT INTO filmcast (film_fk, person_fk) VALUES (9, 19); +INSERT INTO filmcast (film_fk, person_fk) VALUES (10, 20); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +