isso que eu pensei, mas eu nao posso colocar locacao no where pois assim só vai mostrar os filmes repetidos, mas eu tenho que mostrar todos os filmes, e os que nao possuirem diaria (observe o IF ) ele atribui valor 0 (zero)
entendeu?
as estruturas das tabelas sao:
CREATE TABLE usuario (
login VARCHAR(20) NOT NULL,
senha VARCHAR(20) NOT NULL,
nome VARCHAR(20) NOT NULL,
PRIMARY KEY(login));
CREATE TABLE role (
login VARCHAR(20) NOT NULL,
role VARCHAR(20) NOT NULL,
PRIMARY KEY(login,role),
FOREIGN KEY (login) REFERENCES usuario(login)
ON DELETE CASCADE);
CREATE TABLE categoria (
id BIGINT AUTO_INCREMENT NOT NULL,
nome VARCHAR(20) NOT NULL,
cor VARCHAR(50) NOT NULL,
preco DOUBLE NOT NULL,
PRIMARY KEY(id));
CREATE TABLE genero (
id BIGINT AUTO_INCREMENT NOT NULL,
nome VARCHAR(20) NOT NULL,
PRIMARY KEY(id));
CREATE TABLE filme (
id BIGINT AUTO_INCREMENT NOT NULL,
nome VARCHAR(20) NOT NULL,
nacionalidade VARCHAR(50) NOT NULL,
copias INT NOT NULL,
categoria BIGINT NOT NULL,
data_insercao TIMESTAMP NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (categoria) REFERENCES categoria(id)
ON DELETE CASCADE);
CREATE TABLE filme_genero (
filme BIGINT NOT NULL,
genero BIGINT NOT NULL,
FOREIGN KEY (filme) REFERENCES filme(id)
ON DELETE CASCADE,
FOREIGN KEY (genero) REFERENCES genero(id)
ON DELETE CASCADE);
CREATE TABLE locacao (
id BIGINT AUTO_INCREMENT NOT NULL,
cliente VARCHAR(20) NOT NULL,
data_locacao TIMESTAMP NOT NULL,
data_devolucao TIMESTAMP NOT NULL,
status VARCHAR(20) NOT NULL,
rua VARCHAR(50) NOT NULL,
numero INT NOT NULL,
bairro VARCHAR(20) NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (cliente) REFERENCES usuario(login)
ON DELETE CASCADE);
CREATE TABLE filme_locacao (
locacao BIGINT NOT NULL,
filme BIGINT NOT NULL,
PRIMARY KEY(filme,locacao),
FOREIGN KEY (locacao) REFERENCES locacao(id)
ON DELETE CASCADE,
FOREIGN KEY (filme) REFERENCES filme(id)
ON DELETE CASCADE);