Select não retorna dados desejados
Uso BD Firebird 1.5 dialect 3 e possuo as seguintes tabelas:
create table contrato (
codcontrato integer not null,
contratante integer not null,
dataconcl date,
datainicio date not null,
poccomissao char(2) not null collate pxw_intl,
valordivida numeric(15,2) not null
);
create table empresas (
codempresa integer not null,
tipocad varchar(20) not null collate pxw_intl,
razaosocial varchar(100) not null collate pxw_intl,
tipodoc varchar(4) not null collate pxw_intl,
numdoc varchar(14) not null collate pxw_intl
);
create table devedores (
coddevedor integer not null,
contrato integer not null,
devedor integer not null,
tipodivida integer,
valordivida decimal(15,2) not null,
datanegociacao date,
valornegociado decimal(15,2),
datapagto date,
obs descricao /* DESCRICAO = BLOB SUB_TYPE 1 SEGMENT SIZE 200 */
);
Eu gostaria de montar um select que me mostrasse:
Contratante
Devedor
Valor
Data de Contratação
OBS
Sendo que:
Nos campos CONTRATANTES E DEVEDOR não fossem mostrados os ID´s deles como está armazenado no banco e sim o nome dos mesmos.
Tentei o seguinte SQL:
with dmRC.dsContrAberto do
begin
Close;
SelectSQL.Add(´ Select DEVEDORES.VALORDIVIDA, DEVEDORES.DATANEGOCIACAO, DEVEDORES.CODDEVEDOR, CONTRATO.CODCONTRATO, CONTRATO.CONTRATANTE, DEVEDORES.OBS, EMPRESAS.RAZAOSOCIAL, EMPRESAS.CODEMPRESA)´);
SelectSQL.Add(´Where EMPRESAS.RAZAOSOCIAL on EMPRESAS.CODEMPRESA = CONTRATO.CONTRATANTE, EMPRESAS.RAZAOSOCIAL on EMPRESAS.CODEMPRESA = DEVEDORES.CODDEVEDOR, DEVEDORES.DATANEGOCIACAO IS NULL´);
Open;
end;
Alguém pode me dar uma luz no que estou fazendo de errado...
Desde já agradeço a paciencia e ajuda de vocês
Bjx
create table contrato (
codcontrato integer not null,
contratante integer not null,
dataconcl date,
datainicio date not null,
poccomissao char(2) not null collate pxw_intl,
valordivida numeric(15,2) not null
);
create table empresas (
codempresa integer not null,
tipocad varchar(20) not null collate pxw_intl,
razaosocial varchar(100) not null collate pxw_intl,
tipodoc varchar(4) not null collate pxw_intl,
numdoc varchar(14) not null collate pxw_intl
);
create table devedores (
coddevedor integer not null,
contrato integer not null,
devedor integer not null,
tipodivida integer,
valordivida decimal(15,2) not null,
datanegociacao date,
valornegociado decimal(15,2),
datapagto date,
obs descricao /* DESCRICAO = BLOB SUB_TYPE 1 SEGMENT SIZE 200 */
);
Eu gostaria de montar um select que me mostrasse:
Contratante
Devedor
Valor
Data de Contratação
OBS
Sendo que:
Nos campos CONTRATANTES E DEVEDOR não fossem mostrados os ID´s deles como está armazenado no banco e sim o nome dos mesmos.
Tentei o seguinte SQL:
with dmRC.dsContrAberto do
begin
Close;
SelectSQL.Add(´ Select DEVEDORES.VALORDIVIDA, DEVEDORES.DATANEGOCIACAO, DEVEDORES.CODDEVEDOR, CONTRATO.CODCONTRATO, CONTRATO.CONTRATANTE, DEVEDORES.OBS, EMPRESAS.RAZAOSOCIAL, EMPRESAS.CODEMPRESA)´);
SelectSQL.Add(´Where EMPRESAS.RAZAOSOCIAL on EMPRESAS.CODEMPRESA = CONTRATO.CONTRATANTE, EMPRESAS.RAZAOSOCIAL on EMPRESAS.CODEMPRESA = DEVEDORES.CODDEVEDOR, DEVEDORES.DATANEGOCIACAO IS NULL´);
Open;
end;
Alguém pode me dar uma luz no que estou fazendo de errado...
Desde já agradeço a paciencia e ajuda de vocês
Bjx
Lightshine
Curtidas 0
Respostas
Micheus
15/11/2007
Dê uma olhada na sintax do comando SELECT - [urlhttp://www.ibexpert.info/documentation/III.¬20SQL¬20Language¬20Reference/¬20¬207.¬20Data¬20Retrieval/SELECT/117663.html=]link[/url] (veja mais ao fim da página)
Parece estar faltando as cláusulas JOIN
Parece estar faltando as cláusulas JOIN
GOSTEI 0
Micheus
15/11/2007
Dê uma olhada na sintax do comando SELECT - [url=http://www.ibexpert.info/documentation/III.¬20SQL¬20Language¬20Reference/¬20¬207.¬20Data¬20Retrieval/SELECT/117663.html]link[/url] (veja mais ao fim da página)
Parece estar faltando as cláusulas JOIN e FROM, dê uma olhada.
Abraços
Parece estar faltando as cláusulas JOIN e FROM, dê uma olhada.
Abraços
GOSTEI 0
Martins
15/11/2007
Tente com esse código.
Seja qual for o resultado retorne aqui novamente.
Boa sorte e bons códigos.
Select D.VALORDIVIDA, D.DATANEGOCIACAO, D.CODDEVEDOR, C.CODCONTRATO, C.CONTRATANTE, D.OBS, E.RAZAOSOCIAL, E.CODEMPRESA FROM DEVEDORES D, CONTRATO C, empresas E INNER JOIN EMPRESAS on E.CODEMPRESA = C.CONTRATANTE AND E.CODEMPRESA = D.CODDEVEDOR AND D.DATANEGOCIACAO IS NULL;
Seja qual for o resultado retorne aqui novamente.
Boa sorte e bons códigos.
GOSTEI 0
Lightshine
15/11/2007
Olá amigos,
Assim deu certinho:
select empresas.razaosocial, contrato.datainicio, contrato.dataconcl, contrato.valordivida, contrato.poccomissao
from empresas
inner join contrato on (empresas.codempresa = contrato.contratante)
where contrato.dataconcl is null
Valeu pela força
Abraço
Assim deu certinho:
select empresas.razaosocial, contrato.datainicio, contrato.dataconcl, contrato.valordivida, contrato.poccomissao
from empresas
inner join contrato on (empresas.codempresa = contrato.contratante)
where contrato.dataconcl is null
Valeu pela força
Abraço
GOSTEI 0