BUSCA DADOS DA MESMA TABELA NO ACCESS (INNER JOIN)

JULIOBERTOSO 10/10/2016 23:05:59
#467990
Boa noite Galera!

seguinte, estou tentando uma forma de buscar os dados e gravar da melhor forma
tenho um BD no access que possui algumas tabelas, TabClientes, TabAdvogados e um form com algumas TabControls, nestas tabControl eu busco os dados já cadastrado em outro form dos clientes e advogados, porem tanto o advogado de defesa e advogado de acusação estão na mesma tabAdvogados no access, assim como os cliente de acusação e defesa. Meu sistema eu seleciono e trago as informações nos forms e tabcontrol, mas eu não estou conseguindo raciocinar para gravar apenas os codCliente e codAdvogado e uma nova tabQualquer no banco do access e quando buscar as informações eu uso o comando SQL Inner Join.
a dúvida é como buscar com inner join ou outro meio as informações de forma rápida e correta, pois buscar um cliente, um fornecedor, um advogado em cada uma das sua tabelas é tranquilo, mas quando tenho que buscar os dados de dois cliente em uma única tabela no access, lembrando que ele pode ser o cliente de defesa ou de acusação e trazer os dois pra tela em suas respectivas tabcontrol
NICKOSOFT 12/10/2016 05:50:10
#468010
não compreendi bem, mas pra clarear, inner seja qual for a extensão, é união de tabelas, não busca dentro da mesma.....
pelo q entendi q quer buscar 2 registros na mesma tabela, vai precisar de um select melhorado mesmo

um exemplo nesse seu caso seria se tivesse uma terceira tabela de processos, onde tivesse um campo de codadvogado, e codcliente, ai usaria um inner com essas três tabelas, ou ainda mais inners pra buscar as duas partes no processo
select processo.*,advogado.*,cliente.* from ((processo inner join advogado on processo.advogado=advogado.codigo)innerjoin cliente on processo.cliente=cliente.codigo)
algo +ou-assim, e ampliando pegar as 2 partes...processo.advogadoA=advogado.codigo)innerjoin cliente on processo.clienteA=cliente.codigo)innerjoin cliente on processo.clienteD=cliente.codigo
PLUGSOFTSM 13/10/2016 22:45:22
#468077
Amigo Vc tem que fazer da seguinte forma

Select A.Nome, A.Fone from advogados as A where A.Tipo [ô]Defesa[ô] andprocesso = [num] Union Select B.Nome, B.fone from Advogados as B where B.Tipo = [ô]Acusação[ô] and Processo = [Num]

Veja que eu usei campos fictícios.
O segredo é vc usar um alias para identificar a tabela quando quiser fazer mais de um acesso a mesma tabela na mesma consulta;
Evidentemente que haveriam outros modos de fazer essa consulta
Mas para o que vc expôs essa é uma solução
JULIOBERTOSO 02/11/2016 18:04:06
#468695
Galera, Boa tarde !

acho que não me expressei corretamente eu tenho um cadastro de processo judicial e nele eu tenho um cadastro separado para cadastrar o cliente e outro para o advogado. Quando incluo um novo processo eu seleciono e trago a informação do cliente que quero e depois seleciono o advogado para esse cliente e digito o restante do dados do processo normalmente, o que nao estou conseguindo fazer é após buscar esses dados (cliente e advogado) eu preciso salvar no processo e é ai que nao sei fazer, como eu salvo e depois trago toda informação ja com o processo completo preenchido.

por isso pensei no SELECT e INNER JOIN (pelo que pesquisei na internet), mas como nunca havia mexido com ele eu nao estou entendendo muito bem.

ou a solução seria criar os mesmos campos que tenho na tab_Cliente e tab_Advogado e após a busca salvar na tab_Processo ai quando eu fizesse a busca do processo completo preenchido, buscaria as informações depois de salvo na tab_Processo, mas acho que assim ficaria um pouco pesado

NICKOSOFT 02/11/2016 21:04:49
#468700
onde vão os dados do processo vc tem q por um campo pro id do cliente e um pro id do advogado....na hora q salvar, além dos dados do processo, precisa incluir esses 2 ids
na busca vai fazer um inner join da tabela dos dados do processo c a tabela cliente, onde id_cliente=id da tabela clientes, e o mesmo pro advogado id_advogado =id da tabela advogado
Faça seu login para responder