Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex_ps

[Resolvido] Select

Recommended Posts

Oi Pessoal,

 

Estou com uma dúvida que eu não sei nem se dá para sair diretamenente por um select, mas que neste caso, não posso fugir muito disso.

 

Trata-se de uma página que lista informações de processos jurídicos como uma tabela com os títulos:

 

Número do Processo, Número de Pasta, Data de Distribuição, e Nome do Cliente (aqui é que dá nó).

 

O banco é Access e as informações do processo estão em uma tabela e as informações do cliente em outra, ligados pela variável comum CliID.

Até aí beleza!

 

Só que quando eu listo as informações, coloco no cabeçalho da tabela, em cada uma das variáveis, a opção de ordenar crescente ou decrescente, para facilitar a localização das informações.

 

Porém, como a variável comum às duas tabelas é o CliID e não o CliNome, eu não sei se tem como eu ordenar por Nome asc ou desc, à partir de um único select, ou select de select ou Inner join...,pois eu não queria ter que criar uma nova forma de listagem só para exibir as informações deste select específico.

 

Quando se trata de ordenar por outras variáveis, eu coloco uma função e pego o nome do cliente sem problemas, mas como fazer a função ordenar o resultado do select que a chama?

 

Não sei se ficou claro.

 

Alguém tem algum exemplo assim?

 

Obrigado por qualque sugestão.

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Amigo,

 

Você poderia ser um pouco mais específico, por favor?

Minha dúvida cresceu pois, eu tenho que mostrar no mesmo select, tanto informações de uma tabela, no caso informações sobre os processos, como informações de outra tabela, como no caso do nome dos clientes.

Eu até vi alguns exemplos de inner join, mas não entendi como aplicá-los neste caso.

Obrigado.

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um INNER JOIN,você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Acho que o que o Vinícuos comentou é o que estou precisando. Porém, ainda tenho uma dúvida básica:

Se em uma tabela o CliID é número e na outra ele é texto, o Inner Join funciona?

Eu estou tentando e ele dá o erro "Type mismatch in expression".

Como eu tenho certeza que os campos existem nas tabelas e os nomes das tabelas estão corretos, pode ser um detalhe destes? Ou alguma coisa do tipo...Como um deles é Autonumeração e o outro não, podem ter tamanhos diferentes, isto daria erro?

Se for, dá para resolver via código tipo cdbl(processos.CliID) = clientes.CliID ou é viagem?

Como nunca mexi com este tal "Inner Join" tô brigando com este código simples mas o erro persiste.

Obrigado!

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta sua string SQL ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Moçada, consegui!

 

Pastei um pouco pois eu não sabia que tinha que identificar o nome da tabela do campo mesmo antes do FROM.

Daí começou um erro que dizia que o campo podia estar em qualquer uma das duas tabelas...E eu pensava, é lógico que sim, se não eu não estaria fazendo o INNER JOIN.

Por fim, a base é a seguinte:

Executar="SELECT clientes.CliID, clientes.Nome, processos.NumProc FROM clientes INNER JOIN processos ON clientes.CliID = processos.CliID"

 

SE quiser ordenar...

Executar="SELECT clientes.CliID, clientes.Nome, processos.NumProc FROM clientes INNER JOIN processos ON clientes.CliID = processos.CliID ORDER BY clientes.CliID"

 

Vejam que até no caso da ordenação, tem que dizer qual é o CliID a ser ordenado, o da tabela de clientes ou da tabela de processos.

 

Agora eu entendi bem esta encrenca.

 

Com relação aos tipos de campos que também era uma dúvida, encontrei a resposta no site da Microsoft. Realmente os campos precisam ser do mesmo tipo, ou seja Inteiro Longo = Inteiro Longo (ou ainda Autonumeração, pois são iguais). Se for Texto e número não funciona.

 

Obrigado aos amigos que ajudaram e um abraço.

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, beleza

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.