marceloufc Postado Setembro 3, 2004 Denunciar Share Postado Setembro 3, 2004 Pessoal to precisando de ajuda num comando select.Vou postar minha estrutura de tabelas e meu comando que tentei fazer.Tabelas :CREATE TABLE TABCLIENTE( vcCodCliente VARCHAR(5) NOT NULL , vcRzSocial VARCHAR(40) , vcCnpj VARCHAR(20) NOT NULL , vcEndereco VARCHAR(40) , vcBairro VARCHAR(30) , vcCep VARCHAR(10) ,vcEstado VARCHAR(2) , vcMunicipio VARCHAR(30) , vcFone VARCHAR(13) , vcAtividade VARCHAR(50) , vcComentario VARCHAR(100) , PRIMARY KEY(vcCodCliente) ) TYPE=INNODB;CREATE TABLE TABFILIAL( vcCnpj VARCHAR(20) NOT NULL , parentTabCliente VARCHAR(5) NOT NULL ,vcFilialNum VARCHAR(5) , vcEndereco VARCHAR(50) , vcBairro VARCHAR(40) , vcCep VARCHAR(20) , PRIMARY KEY(vcCnpj) , INDEX par_ind (parentTabCliente), FOREIGN KEY (parentTabCliente) REFERENCES TABCLIENTE(vcCodCliente) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=INNODB;CREATE TABLE TABCONTA( vcCodConta VARCHAR(20) NOT NULL , vcCodRed VARCHAR(10) DEFAULT ' ' , parentTabCliente VARCHAR(5) NOT NULL, cTipo CHAR(1) NOT NULL ,vcDescricao VARCHAR(50) NOT NULL , PRIMARY KEY(vcCodRed , parentTabCliente , vcCodRed ), INDEX par_ind (parentTabCliente), FOREIGN KEY (parentTabCliente) REFERENCES TABCLIENTE(vcCodCliente) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=INNODB; CREATE TABLE TABHISTORICO( vcCodHistorico VARCHAR(5) NOT NULL , vcDescricao VARCHAR(40) NOT NULL ,PRIMARY KEY(vcCodHistorico) ) TYPE=INNODB; CREATE TABLE TABLANCAMENTO( ID_Lancamento INT UNSIGNED NOT NULL AUTO_INCREMENT , parentTabCliente VARCHAR(5) NOT NULL , parentTabContaD VARCHAR(10) DEFAULT ' ' , parentTabContaC VARCHAR(10) DEFAULT ' ' , parentTabHistorico VARCHAR(5) NOT NULL , vcLote VARCHAR(10) NOT NULL , datData DATE NOT NULL , dbValor DOUBLE(6,2) NOT NULL, vcAux1 VARCHAR(30) DEFAULT ' ', vcAux2 VARCHAR(30) DEFAULT ' ', vcAux3 VARCHAR(30) DEFAULT ' ', vcAux4 VARCHAR(30) DEFAULT ' ', PRIMARY KEY( ID_Lancamento ) , INDEX ( parentTabCliente ) , FOREIGN KEY( parentTabCliente ) REFERENCES TABCLIENTE( vcCodCliente ) ON DELETE CASCADE ON UPDATE CASCADE, INDEX ( parentTabContaD ) , FOREIGN KEY( parentTabContaD ) REFERENCES TABCONTA( vcCodRed ) ON DELETE CASCADE ON UPDATE CASCADE, INDEX ( parentTabContaC ) , FOREIGN KEY( parentTabContaC ) REFERENCES TABCONTA( vcCodRed ) ON DELETE CASCADE ON UPDATE CASCADE, INDEX ( parentTabHistorico ) , FOREIGN KEY( parentTabHistorico ) REFERENCES TABHISTORICO( vcCodHistorico ) ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=INNODB; Consulta : Minha tabela de Lancamentos contem dois campos onde ambos são chave primarias na tabela de Contas(vcCodReduzido). select L.ID_Lancamento ID , Cl.vcrzSocial razaoSocial,Ct.vcDescricao As ContaDebito , Ct.vcDescricao As ContaCredito , H.vcDescricao Historico,L.vcLote Lote From TabCliente Cl , TabConta Ct , TabHistorico H , TabLancamento L where L.parentTabCliente = Cl.vcCodCliente and L.parentTabContaD = Ct.vcCodRed -- Erro aqui and L.parentTabContaC = Ct.vcCodRed -- Erro aqui and L.parentTabHistorico = H.vcCodHistoricoComo faço de forma correta este select ?Grato pela atenção! Link para o comentário Compartilhar em outros sites More sharing options...
0 gladiador Postado Setembro 3, 2004 Denunciar Share Postado Setembro 3, 2004 /* siga esses passos :http://scriptbrasil.com.br/forum/index.php?showtopic=34203la tem o principio de um relacionamento */ Link para o comentário Compartilhar em outros sites More sharing options...
0 marceloufc Postado Setembro 3, 2004 Autor Denunciar Share Postado Setembro 3, 2004 Cara valeu pela ajuda , porem este tipo de situação eu sei resolver.Atualmente preciso de ajuda em outra situação.Minha tabConta : codConta,CodReduzido,DescricaoMinha tabLancamento : ContaD , ContaC etc. Estes dois campos recebem CodReduzido da tabConta.select L.ID_Lancamento ID , Cl.vcrzSocial razaoSocial,Ct.vcDescricao As ContaDebito , Ct.vcDescricao As ContaCredito , H.vcDescricao Historico,L.vcLote Lote From TabCliente Cl , TabConta Ct , TabHistorico H , TabLancamento Lwhere L.parentTabCliente = Cl.vcCodClienteand L.parentTabContaD = Ct.vcCodRed -- Erro aquiand L.parentTabContaC = Ct.vcCodRed -- Erro aquiand L.parentTabHistorico = H.vcCodHistoricoQuero mostrar a descrição tanto da contaC como da ContaD.Como faço?Valeu! Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
marceloufc
Pessoal to precisando de ajuda num comando select.
Vou postar minha estrutura de tabelas e meu comando que tentei fazer.
Tabelas :
CREATE TABLE TABCLIENTE( vcCodCliente VARCHAR(5) NOT NULL ,
vcRzSocial VARCHAR(40) , vcCnpj VARCHAR(20) NOT NULL , vcEndereco VARCHAR(40) ,
vcBairro VARCHAR(30) , vcCep VARCHAR(10) ,vcEstado VARCHAR(2) ,
vcMunicipio VARCHAR(30) , vcFone VARCHAR(13) , vcAtividade VARCHAR(50) ,
vcComentario VARCHAR(100) , PRIMARY KEY(vcCodCliente) ) TYPE=INNODB;
CREATE TABLE TABFILIAL( vcCnpj VARCHAR(20) NOT NULL ,
parentTabCliente VARCHAR(5) NOT NULL ,vcFilialNum VARCHAR(5) ,
vcEndereco VARCHAR(50) , vcBairro VARCHAR(40) , vcCep VARCHAR(20) ,
PRIMARY KEY(vcCnpj) ,
INDEX par_ind (parentTabCliente), FOREIGN KEY (parentTabCliente) REFERENCES TABCLIENTE(vcCodCliente)
ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=INNODB;
CREATE TABLE TABCONTA( vcCodConta VARCHAR(20) NOT NULL ,
vcCodRed VARCHAR(10) DEFAULT ' ' , parentTabCliente VARCHAR(5) NOT NULL,
cTipo CHAR(1) NOT NULL ,vcDescricao VARCHAR(50) NOT NULL ,
PRIMARY KEY(vcCodRed , parentTabCliente , vcCodRed ),
INDEX par_ind (parentTabCliente), FOREIGN KEY (parentTabCliente) REFERENCES TABCLIENTE(vcCodCliente)
ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=INNODB;
CREATE TABLE TABHISTORICO( vcCodHistorico VARCHAR(5) NOT NULL ,
vcDescricao VARCHAR(40) NOT NULL ,PRIMARY KEY(vcCodHistorico) ) TYPE=INNODB;
CREATE TABLE TABLANCAMENTO( ID_Lancamento INT UNSIGNED NOT NULL AUTO_INCREMENT ,
parentTabCliente VARCHAR(5) NOT NULL , parentTabContaD VARCHAR(10) DEFAULT ' ' , parentTabContaC VARCHAR(10) DEFAULT ' ' ,
parentTabHistorico VARCHAR(5) NOT NULL , vcLote VARCHAR(10) NOT NULL , datData DATE NOT NULL , dbValor DOUBLE(6,2) NOT NULL,
vcAux1 VARCHAR(30) DEFAULT ' ', vcAux2 VARCHAR(30) DEFAULT ' ', vcAux3 VARCHAR(30) DEFAULT ' ', vcAux4 VARCHAR(30) DEFAULT ' ',
PRIMARY KEY( ID_Lancamento ) ,
INDEX ( parentTabCliente ) , FOREIGN KEY( parentTabCliente ) REFERENCES TABCLIENTE( vcCodCliente ) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX ( parentTabContaD ) , FOREIGN KEY( parentTabContaD ) REFERENCES TABCONTA( vcCodRed ) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX ( parentTabContaC ) , FOREIGN KEY( parentTabContaC ) REFERENCES TABCONTA( vcCodRed ) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX ( parentTabHistorico ) , FOREIGN KEY( parentTabHistorico ) REFERENCES TABHISTORICO( vcCodHistorico ) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=INNODB;
Consulta : Minha tabela de Lancamentos contem dois campos onde ambos são chave primarias na tabela de Contas(vcCodReduzido).
select L.ID_Lancamento ID , Cl.vcrzSocial razaoSocial,Ct.vcDescricao As ContaDebito , Ct.vcDescricao As ContaCredito , H.vcDescricao Historico,L.vcLote Lote
From TabCliente Cl , TabConta Ct , TabHistorico H , TabLancamento L
where L.parentTabCliente = Cl.vcCodCliente
and L.parentTabContaD = Ct.vcCodRed -- Erro aqui
and L.parentTabContaC = Ct.vcCodRed -- Erro aqui
and L.parentTabHistorico = H.vcCodHistorico
Como faço de forma correta este select ?
Grato pela atenção!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados