[firebase-br] Ajuda em Select

Jean R. Streleski jrs.net em uol.com.br
Ter Jan 11 15:04:39 -03 2005


Olá pessoal

    Estou com problemas na execução do select abaixo. Vou tentar mostrar a estrutura de chaves das tabelas envolvidas para que vcs possam ter uma idéia de como me ajudar. Segue:

TABLES     CHAVE                          ALIAS NO SELECT      RELACIONAMENTO   

DIVIDA      3 CAMPOS + CLIENTE      A                            DIVIDA x CLIENTE
CLIENTE    CLIENTE                        B                            CLIENTE x DIVIDA/ CLIENTE x CIDADE
CIDADE     CIDADE                         C                            CIDADE X CLIENTE(CIDADE = CIDADE_EMPR)

    Preciso retornar os somatórios e totalizações de todas as cidades que se situam em determinada região(VER SEGUNDA CLÁUSULA WHERE). Acontece que, se usar o INNER JOIN para CLIENTE E DIVIDA, o select me retornará apenas as totalizações das cidades que tem REGISTROS na tabela de DÍVIDAS. Preciso que o select retorne os dados de todas as cidades, mesmo que zerados. Sei que para isso, devo usar a cláusula RIGHT, mas como o relacionamento entre DIVIDA E CIDADE passa pela tabela de CLIENTES, não estou sabendo como montar o RIGHT. Segue abaixo o select, com o INNER e precisando adequar o uso do RIGHT.

SELECT B.CIDADE_EMPR, C.NOME, SUM(A.VLPAGO) AS SOMA ,
       SUM(A.VLPAGO * 0.6)AS SOMA60,COUNT(B.CLIENTE) AS QTDE
FROM DIVIDA A
 INNER JOIN CLIENTE  B ON A.CLIENTE = B.CLIENTE
 INNER JOIN CIDADE   C ON C.CIDADE  = B.CIDADE_EMPR
WHERE A.DTPAGAMENTO IS NOT NULL AND
      B.CIDADE_EMPR IN (SELECT D.CIDADE FROM REGACIDADE D WHERE D.REGADMINISTR = :reg) AND
      ANO = 2004
GROUP BY B.CIDADE_EMPR, C.NOME
ORDER BY B.CIDADE_EMPR, C.NOME

Aguardo a ajuda dos colegas

Um abraço

Jean Rozan Streleski
Bauru / SP

 


Mais detalhes sobre a lista de discussão lista