Juntar 3 Tabelas em numa Query ...

Delphi

10/03/2004

E aí galera .

Estou precisando juntar 3 tabelas para imprimir a junção dessas tabelas, porém quando junto 2 tabelas o resultado é satisfatório, mas quando tentei juntar 3 tabelas não obtive sucesso, para juntar as 2 tabelas fiz assim:
Select * From Licitacao,FirmaNaLicitacao

para juntar 3 tabelas tentei assim:
Select * From Licitacao,FirmaNaLicitacao,ItensDaLicitacao

porém não deu certo. Será que estou fazendo errado?

obrigado ...


Giovani

Giovani

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

10/03/2004

você tem que fazer [b:f18ac67918]join´s[/b:f18ac67918] entre as tabelas.;...

e qual o erro que está dando?


GOSTEI 0
Giovani

Giovani

10/03/2004

[quote:03682df49c=´Lucas Alves Silva´]você tem que fazer [b:03682df49c]join´s[/b:03682df49c] entre as tabelas.;...

e qual o erro que está dando?[/quote:03682df49c]

erro não está dando, simplesmente não lista os resultados com 3 tabelas, mas com 2 tabelas dá certo...

me dá um exemplo de join entre tabelas. falou...


GOSTEI 0
Fabio.hc

Fabio.hc

10/03/2004

Vc tem que colocar WHERE.

Ex:
Select * From Licitacao,FirmaNaLicitacao,ItensDaLicitacao
[b:13f15f71e8]WHERE Licitacao.codigo = FirmaNaLicitacao.codigo
and Licitacao.itens = ItensDaLicitacao.codigo[/b:13f15f71e8]

vc coloca os nomes dos campos de ligação das tabelas.


GOSTEI 0
Giovani

Giovani

10/03/2004

Vc tem que colocar WHERE. Ex: Select * From Licitacao,FirmaNaLicitacao,ItensDaLicitacao [b:a8c653df80]WHERE Licitacao.codigo = FirmaNaLicitacao.codigo and Licitacao.itens = ItensDaLicitacao.codigo[/b:a8c653df80] vc coloca os nomes dos campos de ligação das tabelas.



Continua não aparecendo os Valores.

Não teria outra maneira de unir estas 3 tabelas numa consulta Query?


GOSTEI 0
Cabelo

Cabelo

10/03/2004

tente assim:

Select * From Licitacao,FirmaNaLicitacao,ItensDaLicitacao
WHERE Licitacao.CodigoFirma = FirmaNaLicitacao.codigo
and Licitacao.Codigoitens = ItensDaLicitacao.codigo

se não der certo..

veja se há dados compatíveis nas tabelas..

isto é se há campos para relacionamento entre estas três tabela..

se houver, são os campos do select que não estão corretos..

então altere os campos relacionais das tabelas em seu select

sem mais

Cabelo


GOSTEI 0
Giovani

Giovani

10/03/2004

tente assim: Select * From Licitacao,FirmaNaLicitacao,ItensDaLicitacao WHERE Licitacao.CodigoFirma = FirmaNaLicitacao.codigo and Licitacao.Codigoitens = ItensDaLicitacao.codigo se não der certo.. veja se há dados compatíveis nas tabelas.. isto é se há campos para relacionamento entre estas três tabela.. se houver, são os campos do select que não estão corretos.. então altere os campos relacionais das tabelas em seu select sem mais Cabelo



Deu Certo, mais os Dados estão se repetindo. Ex:

Estão aparecendo várias vezes a mesma Firma. Eu acho que a consulta com o WHERE é que está fazendo a repetição. Como seria uma consulta para que os dados não se repitam?

Valeu ...


GOSTEI 0
Kyonak

Kyonak

10/03/2004

verifique se existe dados diferentes entre essas linhas
por exemplo
vc em 2 linhas
com nome Fulano só que a data eh diferente aí aparece 2 mesmo
mas se estiver tudo idêntico use o DISTINCT

select distinct campo 1, campo 2 ...


GOSTEI 0
Lucas Silva

Lucas Silva

10/03/2004

Deu Certo, mais os Dados estão se repetindo.


Isso é o típico erro de falta de join..... coloca o seu sql ai...


GOSTEI 0
Cabelo

Cabelo

10/03/2004

cara é o seguinte..

esta faltando algum relacionamento na clausula where..

para saber te responder preciso que vc poste os campos das tabelas aqui..

respectivamente com seu sql..

assim poderei te ajudar masi..

Cabelo


GOSTEI 0
Kyonak

Kyonak

10/03/2004

cara é o seguinte.. esta faltando algum relacionamento na clausula where.. para saber te responder preciso que vc poste os campos das tabelas aqui.. respectivamente com seu sql.. assim poderei te ajudar masi.. Cabelo


Cabelo, é só olhar as tabelas dele, a tabela itensdalicitação indica q uma licitação tem mais de 1 item, ou seja os registros vao se repetir, aí nao tem jeito, nem distinct quebra o galho dele.


GOSTEI 0
Cabelo

Cabelo

10/03/2004

Uma saída para isso é vc fazer um master/detail..

insira um grid para os iten da licitação, sendo esse o detail.
O master vc pode criar a partir da tabela Firma..

esse então seria o cabeçalho..

quando vc selecionar outra firma ele iria mudando os itens de acordo com a firma..

assim :

select * from ItensLicitacao where Itenslicitacao.codigofirma = codigo da firam que vc está selecionando..

assim funciona..

té +

Cabelo


GOSTEI 0
Mlnascimento

Mlnascimento

10/03/2004

Veja se issso resolve seu problema.

SELECT*
FROM LICITACAO
INNER JOIN LICITACAO
ON (LICITACAO.CAMPO = FIRMANALICITACAO.CAMPO)
INNER JOIN ITENSDALICITACAO
ON (FIRMANALICITACAO.CAMPO = ITENSNALICITACAO.CAMPO)

Marcelo Nascimento
mlnascimento@celpe.com.br :shock:


GOSTEI 0
POSTAR