Meu caro, a resposta para o seu problema chama-se OUTER JOIN. Se ainda não foi apresentado a ele, eis um exemplo baseado na sua dificuldade. Detalhe: aqui estou fazendo uso de JOINs explícitos. O que vc usou são JOINS implícitos por meio do operador AND na cláusula WHERE. Para saber mais sobre OUTER JOINs, JOINs explícitos e implícitos, sugiro que vc procure por artigos que falem sobre linguagem SQL padrão e (melhor ainda) algebra relacional.
SELECT TCLIENTE.NOMECLIENTE, TMOV.DATAENTRADA, TMOV.HORAENTRADA, TMOV.HORASAIDA, TMOV.ID, TPRECO.DESCRICAO, TPRECO.VALOR, TMOV.VALORTOTAL, TPRODUTO.DESCRICAO, TITMOV.QUANTIDADE, TITMOV.PRECOUNITARIO FROM TMOV JOIN TPRECO ON TPRECO.ID = TMOV.IDPRECO JOIN TCLIENTE ON TMOV.IDCLIENTE = TCLIENTE.ID OUTER JOIN TITMOV ON TMOV.ID = TITMOV.IDMOV OUTER JOIN TPRODUTO ON TPRODUTO.ID = TITMOV.IDPRODUTO WHERE TMOV.POSICAO = 'F' AND TMOV.DATA_INC = :Data_Inc ORDER BY TMOV.ID (Não testei pq não tenho seu banco de dados pra avaliar, mas acredito que deva funcionar!) Boa sorte. Sds. ________________________________ To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Wed, 23 Jan 2008 09:37:46 -0800 Subject: [delphi-br] Dúvida SQL Amigos, estou com uma dúvida de relacionamento que é o seguinte, tenho a seguinte sentença: SELECT TCLIENTE.NOMECLIENTE, TMOV.DATAENTRADA, TMOV.HORAENTRADA, TMOV.HORASAIDA, TMOV.ID, TPRECO.DESCRICAO, TPRECO.VALOR, TMOV.VALORTOTAL, TPRODUTO.DESCRICAO, TITMOV.QUANTIDADE, TITMOV.PRECOUNITARIO FROM TMOV, TITMOV, TCLIENTE, TPRODUTO, TPRECO WHERE TMOV.ID = TITMOV.IDMOV AND TMOV.IDCLIENTE = TCLIENTE.ID AND TMOV.IDPRECO = TPRECO.ID AND TITMOV.IDPRODUTO = TPRODUTO.ID AND TMOV.POSICAO = 'F' AND TMOV.DATA_INC = :Data_Inc ORDER BY TMOV.ID Nessa sentença eu tenho uma tabela de movimento (TMOV) que relaciona com a tabela de cliente (TCLIENTE), preço (TPRECO) e itens do movimento (TITMOV), e a tabela (TITMOV) relaciona com a tabela de produto (TPRODUTO), porém nem sempre todo movimento terá itens consumidos, mais eu preciso que mostre os demais campos (NOMECLIENTE, DATAENTRADA, HORAENTRADA...). Quando eu executo esse script no Interbase ele só me traz os registros que além de atender minhas excessões da where tem que conter registros em todas as tabelas. Como eu contorno isso, ou seja, como faço para me retornar dados mesmo quando meu movimento não tiver itens? Só para esclarecer, minha tabela de movimento registra a entrada e saída de clientes e quando um cliente entra ele pode consumir determinados produtos ou não que são controlados pela tabela de itens (TITMOV). Grande abraço, Angelo Louzada Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] _________________________________________________________________ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/