· 8 years ago · Aug 24, 2018, 08:50 PM
1CREATE TABLE IF NOT EXISTS `Filme` (
2 `idF` int(2) unsigned NOT NULL,
3 `nome` varchar(100) NOT NULL,
4 `ano` int(4) unsigned NOT NULL,
5 PRIMARY KEY (`idF`)
6) DEFAULT CHARSET=utf8;
7INSERT INTO `Filme`
8 (`idF`, `nome`, `ano`) VALUES
9 ('10', '11 HOMENS e 1 SEGREDO', '1960'),
10 ('20', '11 HOMENS e 1 SEGREDO', '2001'),
11 ('30', 'STAR WARS I', '1999');
12
13
14CREATE TABLE IF NOT EXISTS `Atuacao` (
15 `idF` int(2) unsigned NOT NULL,
16 `idA` int(2) unsigned NOT NULL
17) DEFAULT CHARSET=utf8;
18INSERT INTO `Atuacao`
19 (`idF`, `idA`) VALUES
20 ('10', '3'),
21 ('20', '1'),
22 ('20', '2'),
23 ('30', '1');
24
25
26CREATE TABLE IF NOT EXISTS `Ator` (
27 `idA` int(2) unsigned NOT NULL,
28 `nome` varchar(100) NOT NULL,
29 PRIMARY KEY (`idA`)
30) DEFAULT CHARSET=utf8;
31INSERT INTO `Ator`
32 (`idA`, `nome`) VALUES
33 ('1', 'Brad Pitt'),
34 ('2', 'Brad Pitt'),
35 ('3', 'Frank Sinatra');
36
37
38
39-- ================================================================================
40-- ================================================================================
41-- ================================================================================
42
43-- obter filmes que possuem refilmagens
44/*
45SELECT DISTINCT f1.nome
46FROM Filme AS f1, Filme AS f2
47WHERE f1.nome = f2.nome
48 and f1.ano <> f2.ano
49*/
50
51
52-- obter nomes dos filmes em que Brad Pitt atuou
53/*
54SELECT DISTINCT Filme.nome
55FROM Filme, Ator, Atuacao
56WHERE Filme.idF = Atuacao.idF and Atuacao.idA = Ator.idA and Ator.nome = 'Brad Pitt'
57*/
58
59-- obter nomes dos filmes em que Brad Pitt atuou usando IN
60SELECT DISTINCT f.nome
61FROM Filme AS f
62WHERE f.idF IN (SELECT Atuacao.idF
63 FROM Atuacao, Ator
64 WHERE Atuacao.idA = Ator.idA
65 and Ator.nome = 'Brad Pitt')