Busca de mídias não locadas
Olá,
Estou desenvolvendo um sistema de gestão de locadoras e preciso montar uma query que me retorne as mídias não locadas porém não consigo pensar em como fazer esta verificação de forma que não pareca uma gambiarra. Alguém me ajuda?
/ Tabela de mídias cadastradas /
DROP TABLE IF EXISTS `sis_locadora`.`loc_midias`;
CREATE TABLE `sis_locadora`.`loc_midias` (
`mid_Codigo` int(11) NOT NULL auto_increment,
`mid_Titulo` varchar(40) NOT NULL,
`mid_Genero` smallint(6) NOT NULL,
`mid_Tipo` smallint(6) NOT NULL,
`mid_Sinopse` blob,
`mid_Duracao` varchar(5) NOT NULL,
`mid_Censura` smallint(6) NOT NULL,
`mid_Ano` smallint(6) default NULL,
`mid_Pais` smallint(6) default NULL,
`mid_DataCadastro` timestamp NULL default CURRENT_TIMESTAMP,
`mid_PalavrasChave` varchar(255) default NULL,
`mid_Observacoes` blob,
`mid_Capa` varchar(36) default NULL,
`mid_LimiteLancamento` timestamp NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`mid_Codigo`)
) ENGINE=InnoDB AUTO_INCREMENT=1056 DEFAULT CHARSET=utf8;
/ Tabela de vigêncas de preços /
DROP TABLE IF EXISTS `sis_locadora`.`loc_vigencias`;
CREATE TABLE `sis_locadora`.`loc_vigencias` (
`vig_Data` timestamp NOT NULL default CURRENT_TIMESTAMP,
`vig_Tipo` int(11) default NULL,
`vig_Genero` int(11) default NULL,
`vig_Midia` int(11) default NULL,
`vig_Preco` double NOT NULL,
`vig_Lancamento` double NOT NULL,
`vig_Codigo` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY USING BTREE (`vig_Codigo`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `sis_locadora`.`loc_locacoes`;
CREATE TABLE `sis_locadora`.`loc_locacoes` (
`loc_Codigo` int(11) NOT NULL auto_increment,
`loc_DataLocacao` timestamp NOT NULL default '0000-00-00 00:00:00',
`loc_Cliente` int(11) NOT NULL,
`loc_Midia` int(11) NOT NULL,
`loc_ValorLocacao` double(15,3) NOT NULL,
`loc_ValorPago` double(15,3) default NULL,
`loc_DataDevolucao` timestamp NULL default '0000-00-00 00:00:00',
`loc_DataRealDevolucao` timestamp NULL default NULL,
`loc_DataPagamento` timestamp NULL default NULL,
PRIMARY KEY (`loc_Codigo`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/ minha consulta que retorna TODAS as mídias e o valor das mesmas (tabela vigencia) se lançamento ou não /
select mid_codigo, mid_titulo, (if(mid_LimiteLancamento > CURDATE(),vig_Lancamento, vig_Preco)) AS mid_preco
from loc_midias
inner join loc_vigencias on (mid_genero = vig_genero) or (mid_tipo = vig_tipo) or (mid_codigo = vig_midia)
order by vig_data desc
---
Sintetizando a descrição do problema:
Preciso buscar alguns campos da tabela loc_Midias e o respectivo valor da mídia, de acordo com os dados cadastrados na tabela loc_vigencias que não esteja alugada. Para controlar as mídias alugadas, tenho a tabela loc_locacoes onde eu sei que a mídia está alugada se o campo loc_DataRealDevolucao vale null.
Alguém consegue adaptar esta query para que retorne apenas as mídias não alugadas com seu respectivo preço de locação?
Discussão (2)
Carregando comentários...