Caro colega,
 
O resultado q vc quer, ou pelo menos o resultado q vc desenhou na base do seu email.... não pode ser obtido com uma única instrução SQL....
 
Porquê...?
 
Porque, de acordo, com a cardinalidade das entidades q vc desenhou no corpo do seu email... a tabela ORCAMENTO não se encontra diretamente relacionada a tabela VENDAS, ou seja, vc teria uma modelagem de dados mais ou menos como a seguinte(desculpe o horrível desenho):
 
---------------------------  1             N --------------------------------
---    CLIENTE    --- <---------------- ----- ORCAMENTO ----
---------------------------                    --------------------------------
            ^ 1
            | N
-------------------------
---    VENDA    ---
-------------------------
            ^ 1
            | N
-------------------------
---    VENDA    ---
---     ITEM       ---
-------------------------
 
Perceba q vc pode relacionar perfeitamente bem as tabelas VENDA ITEM e VENDA com a tabela CLIENTE em apenas uma instrução SQL.... Assim como, também, vc pode relacionar a tabela ORCAMENTO perfeitamente bem com a tabela CLIENTE em apenas uma instrução SQL, no entanto o relacionamento das quatro tabelas em uma única instrução SQL não é possível, pois provocaria o mesmo efeito de produto cartesiano o qual vc já experimentou antes em outras dúvidas suas anteriores.
 
Para resolver esse problema vc precisa montar uma matriz q deverá ter o formato das informações as quais vc deseja mostrar e, à partir daí, ir construindo o resultado através de duas instruções SQL, uma para cada braço de relacionamentos.
 
Vc pode fazer isso em JAVA... ou através de uma Stored Procedure (recomendado) do gerenciador de banco de dados q estiver utilizando....
 
Caso deseje eu posso te dar um exemplo prático disso, mas preciso saber q gerenciador de banco de dados vc está utilizando para poder montar o exemplo com as instruções corretas, pois as maneiras de fazê-lo podem variar ligeiramente de um gerenciador para outro.
 
 
[]'s
 
Antonip Carlos Antunes
-----Mensagem original-----
De: Javanês <[EMAIL PROTECTED]>
Para: Sun <[EMAIL PROTECTED]>; SouJava <[EMAIL PROTECTED]>; GOJUG <[EMAIL PROTECTED]>
Data: Quinta-feira, 9 de Março de 2000 05:26
Assunto: Re: [SouJava-J] Consultas com tabelas relacionadas

 
Caros amigos, antes de mais nada saudações javanesas,
Desculpas por ter mandando em HTML, mas não tive outra opção.

Tendo os seguintes dados necessito saber qual consulta SQL devo fazer:

  Table CLIENTE // DADOS CONTIDOS NA TABELA
  CODCLI TIPO NOME
  000001 1    JOSE DA SILVA
  000012 1    JOAO DA SILVA
  000309 1    MARIA DE SÁ

  PK=CODCLI+TIPO

  Table VENDA // DADOS CONTIDOS NA TABELA
  NUMERO CODCLI TIPO DATA
  000001 000309 1    15-02-2000
  000002 000001 1    12-02-2000
  000003 000012 1    13-02-2000
  000004 000309 1    25-02-2000

  PK=NUMERO
  FK=CLIENTE.CODCLI+CLIENTE.TIPO

  Table VENDAITEM // DADOS CONTIDOS NA TABELA
  NUMERO CODPRO QUANT
  000001 M-0001     1
  000001 P-1212     2
  000002 N-1211    51
  000003 O-1281    25
  000003 U-1211    10
  000003 T-1285    12
  000003 Q-1265    35
  000004 K-1248    18

  PK=NUMERO+CODPRO
  FK=VENDA.NUMERO

  Table ORCAMENTO // DADOS CONTIDOS NA TABELA
  NUMERO CODCLI TIPO DATA
  000021 000001 1    17-02-2000
  000032 000309 1    18-02-2000
  000043 000012 1    10-02-2000
  000054 000309 1    28-02-2000

  PK=NUMERO
  FK=CLIENTE.CODCLI+CLIENTE.TIPO
 Lembro que pode não conter dados em uma das tabelas (ORCAMENTO, VENDA ou VENDAITEM)

Resultado esperado :

                          ORCAMENTO                     VENDA                         VENDAITEM
CODCLI TIPO CLIENTE       NUMERO CODCLI TIPO DATA       NUMERO CODCLI TIPO DATA       NUMERO CODPRO QUANT
000001 1    JOSE DA SILVA 000021 000001 1    17-02-2000
000001 1    JOSE DA SILVA                               000002 000001 1    12-02-2000
000001 1    JOSE DA SILVA                               000002 000001 1    12-02-2000 000002 N-1211    51
000012 1    JOAO DA SILVA 000043 000012 1    10-02-2000
000012 1    JOAO DA SILVA                               000003 000012 1    13-02-2000
000012 1    JOAO DA SILVA                               000003 000012 1    13-02-2000 000003 O-1281    25
000012 1    JOAO DA SILVA                               000003 000012 1    13-02-2000 000003 U-1211    10
000012 1    JOAO DA SILVA                               000003 000012 1    13-02-2000 000003 T-1285    12
000012 1    JOAO DA SILVA                               000003 000012 1    13-02-2000 000003 Q-1265    35
000309 1    MARIA DE SÁ   000032 000309 1    18-02-2000
000309 1    MARIA DE SÁ   000054 000309 1    28-02-2000
000309 1    MARIA DE SÁ                                 000001 000309 1    15-02-2000
000309 1    MARIA DE SÁ                                 000001 000309 1    15-02-2000 000001 M-0001     1
000309 1    MARIA DE SÁ                                 000001 000309 1    15-02-2000 000001 P-1212     2
000309 1    MARIA DE SÁ                                 000004 000309 1    25-02-2000
000309 1    MARIA DE SÁ                                 000004 000309 1    25-02-2000 000004 K-1248    18
 

Responder a