Select não retorna dados desejados

Delphi

15/11/2007

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


Lightshine

Lightshine

Curtidas 0

Respostas

Micheus

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


GOSTEI 0
Micheus

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


GOSTEI 0
Martins

Martins

15/11/2007

Tente com esse código.

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

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


GOSTEI 0
POSTAR