Jump to content


Photo

Sql Complicado - Relacionar Registros


  • Faça o login para participar
1 reply to this topic

#1 filipewan

filipewan

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 26/03/2010, 15:21

Olá, boa tarde.

Vamos ver se consigo explicar meu problema:

Tenho uma tabela:

codigo1 | codigo2
--------------------
A | B
A | C
D | A
C | E
F | G

Bem, essa é a estrutura de uma tabela onde armazeno a equivalencia de cada código, independente da coluna onde ele se encontra.
Por exemplo: Quais são os equivalentes do código A?
A = B, A = C, A = D.
Até ai, tudo bem. Basta pesquisar o código A nas duas colunas que terei os equivalentes a ele.
SELECT * FROM tabela WHERE codigo1='A' OR codigo2 = 'A'

Porém, com isso, logicamente, o código B = C por que AMBOS são equivalentes ao código A. Ou seja:
Se A = B e A = C então B = C. Certo?
Esse seria o objetivo dessa tabela. Fazer essa amarração entre código.

Agora seguindo essa linha de raciocínio, podemos dizer que A = E por que o C = E, e como o A = C, então também A = E
Mesmo não existindo esse registro na minha tabela, A = E, eu precisava exibir esse resultado, e ai que está o problema:
Como fazer um SQL para retornar essa 'equivalencias' para mim num único resultado?
(Poderia até ser uma procedure.)
O resultado que eu preciso seria: Quais os equivalentes a A?
Resposta: B, C, D e E

Será que deu pra entender meu problema?

Agradeço desde já pela ajuda.

#2 Flechaus

Flechaus

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Localidade:RJ - Brasil
  • Interesses:Troca de informações sobre linguagens de programação e banco de dados.

Posted 09/04/2010, 23:59

Olá, boa tarde.

Vamos ver se consigo explicar meu problema:

Tenho uma tabela:

codigo1 | codigo2
--------------------
A | B
A | C
D | A
C | E
F | G

Bem, essa é a estrutura de uma tabela onde armazeno a equivalencia de cada código, independente da coluna onde ele se encontra.
Por exemplo: Quais são os equivalentes do código A?
A = B, A = C, A = D.
Até ai, tudo bem. Basta pesquisar o código A nas duas colunas que terei os equivalentes a ele.
SELECT * FROM tabela WHERE codigo1='A' OR codigo2 = 'A'

Porém, com isso, logicamente, o código B = C por que AMBOS são equivalentes ao código A. Ou seja:
Se A = B e A = C então B = C. Certo?
Esse seria o objetivo dessa tabela. Fazer essa amarração entre código.

Agora seguindo essa linha de raciocínio, podemos dizer que A = E por que o C = E, e como o A = C, então também A = E
Mesmo não existindo esse registro na minha tabela, A = E, eu precisava exibir esse resultado, e ai que está o problema:
Como fazer um SQL para retornar essa 'equivalencias' para mim num único resultado?
(Poderia até ser uma procedure.)
O resultado que eu preciso seria: Quais os equivalentes a A?
Resposta: B, C, D e E

Será que deu pra entender meu problema?

Agradeço desde já pela ajuda.


Olá filipewan...
Pela minha experiência em programação, constatei duas coisas:
1) A organização geral do processamento de um sistema, deve ser o mais linear possível.
2) Quando nós não sabemos exatamente como fazer algo, geralmente sempre vamos pelo caminho mais difícil.
Na minha opinião, seu mecanismo de processamento não é linear. Por isso ficou complicado e vc engasgou neste ponto.
Eu acho que vc deveria realizar um outro formato de processamento, exemplo:
Uma tabela onde vc iria cadastrar todas as suas variáveis e seus respectivos valores.
Essa tabela poderia ter o nome de "variaveis" e ter dois campos: "nome", "valor".
No campo "nome" vai o nome das variáveis logicamente, e no campo "valor", seu valor numérico ou alfa-numérico.
Sendo assim, poderia ficar:
Nome|Valor
A | 25
B | 45
C | 35
D | 25
E | 25
Assim ficaria mais fácil de saber as equivalências da variável A. (seriam D, E)
Poderia utilizar duas consultas de seleção para isso, ou uma única com uma sub-consulta para obter o valor de A.
Espero ter te ajudado.
Boa sorte.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq