Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pablospfc

left join contratos e aditivos

Recommended Posts

Ola pessoal, tenho as seguintes tabelas no meu sistema de locação de imóveis.

 

TB_CONTRATO

CREATE TABLE `tb_contrato` (
  `PK_INT_CONTRATO` int(11) NOT NULL AUTO_INCREMENT,
  `FK_INT_LOCATARIO` int(11) NOT NULL,
  `FK_INT_STATUS` int(11) DEFAULT NULL,
  `FK_INT_QUARTO` int(11) DEFAULT NULL,
  `ALU_DEC_VALOR` decimal(9,2) DEFAULT NULL,
  `ALU_DAT_DATAENTREGA` date DEFAULT NULL,
  `ALU_DAT_VENCIMENTO` date DEFAULT NULL,
  `ALU_DAT_INICIO` date DEFAULT NULL,
  `ALU_DAT_FIM` date DEFAULT NULL,
  `ALU_INT_PRAZO` int(11) DEFAULT NULL,
  `ALU_STR_CHAVE` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`PK_INT_ALUGUEL`),
  KEY `fk_TB_ALUGUEL_TB_LOCATARIO1_idx` (`FK_INT_LOCATARIO`),
  KEY `fk_TB_ALUGUEL_TB_STATUS1_idx` (`FK_INT_STATUS`),
  KEY `fk_quarto` (`FK_INT_QUARTO`),
  CONSTRAINT `fk_quarto` FOREIGN KEY (`FK_INT_QUARTO`) REFERENCES `tb_quarto` (`PK_INT_QUARTO`),
  CONSTRAINT `fk_TB_ALUGUEL_TB_LOCATARIO1` FOREIGN KEY (`FK_INT_LOCATARIO`) REFERENCES `tb_locatario` (`PK_INT_LOCATARIO`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_TB_ALUGUEL_TB_STATUS1` FOREIGN KEY (`FK_INT_STATUS`) REFERENCES `tb_status` (`PK_INT_STATUS`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

TB_ADITIVO

CREATE TABLE `tb_aditivo` (
  `PK_INT_ADITIVO` int(11) NOT NULL,
  `FK_INT_ALUGUEL` int(11) DEFAULT NULL,
  `ADI_DAT_INICIO` date DEFAULT NULL,
  `ADI_DAT_FIM` date DEFAULT NULL,
  `ADI_INT_PRAZO` int(11) DEFAULT NULL,
  `ADI_DAT_VENCIMENTO` date DEFAULT NULL,
  `ADI_DEC_VALOR` decimal(9,2) DEFAULT NULL,
  `FK_INT_STATUS` int(11) DEFAULT NULL,
  PRIMARY KEY (`PK_INT_ADITIVO`),
  KEY `FK_INT_ALUGUEL_idx` (`FK_INT_ALUGUEL`),
  KEY `FK_INT_STATUS_idx` (`FK_INT_STATUS`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

Queria exibir na tela todos os contratos atuais(vigentes), mas quero pesquisar nas duas tabelas, tipo quando não o contrato não tiver na tabela de aditivo (ou seja se ainda não houve renovação) trazer o registro na tabela de contrato e vice versa. Quero trazer todos os contratos atuais juntando as duas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi fazendo assim

select fk_int_aluguel as id, fk_int_status as Status_, fk_int_quarto as Quarto, adi_dec_valor as Valor, 
adi_dat_entrega as Entrega, adi_dat_vencimento as Vencimento  from tb_aditivo where fk_int_status=1
union
SELECT pk_int_aluguel as id, fk_int_status as Status_, fk_int_quarto as Quarto, alu_dec_valor as Valor,
alu_dat_dataentrega as Entrega, alu_dat_vencimento as Vencimento  FROM tb_aluguel 
WHERE pk_int_aluguel NOT IN (SELECT fk_int_aluguel FROM tb_aditivo)

Essa query faz um select nas duas tabelas seleciona dados da tabela de contratos que não contem na tabela de aditivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.