SELECT COMPLICADO

LABROSKAS 25/05/2011 06:22:03
#374886
Boas,

Tenho duas tabelas que preciso interligar, eu tinha uma imagem, mas não consigo inseri-la não sei porque.

Estrutura da tabela A:
Campos (Campo1, Designacao, ID)
Linha 1: (5001, [ô]Rendimentos Externos[ô], 1)
Linha 2: (5002, [ô]Rendimentos Internos[ô], 2)
Linha 3: (5003, [ô]Rendimentos Extras[ô], 3)
Linha 4: (5004, [ô]Rendimentos Suplementares[ô], 4)


Estrutura da tabela B:
Campos (Nipc, Ano, 5001, 5002, 5003,...., ID)
Linha 1: (123456789, 2010, 12, 45, 36, ......, 1)

Agora ó problema esta aqui, eu kero usar a Tabela A como se fosse so de configuração e meter os valores das duas numa grid unica que ficaria mais ou menos assim:

Campos (Campo, Designacao, Valor)
Linha 1: (5001, [ô]Rendimentos Externos[ô], 12)
Linha 2: (5002, [ô]Rendimentos Internos[ô], 45)
Linha 3: (5003, [ô]Rendimentos Extras[ô], 36)

Espero ter ajudado na explicação e gostava de obter ajuda Sff.

Cumprimentos,
ACG1574 25/05/2011 08:38:55
#374892
Resposta escolhida
select * from tabelaA a, tabelaB b where a.id=b.id
KIKO.WIZZ 25/05/2011 10:37:46
#374904
Qual é a regra pra ligar uma tabela na outra? é o ID? Se for faça o seguinte:

[txt-color=#0000f0]SELECT TabelaA.*, TabelaB.* FROM TabelaA INNER JOIN TabelaB ON TabelaA.ID_i = TabelaB.ID[/txt-color]
LABROSKAS 25/05/2011 12:15:16
#374939
Desde já obrigado, mas eu keria mesmo era comparar o campo da tabela A com o Nome do campo da tabela B.

Da Tabela A junto o (Tipo+Campo) dá por Ex A5001.
Depois vou à Tabela B ler o valor que estiver no Nome do campo igual ao A5001.

Eu sei k parece dificil, mas ate para explicar é dificil...

Cumprimentos.
MARCELO.TREZE 25/05/2011 13:44:51
#374947
Sabe colega acho que vc teria de alterar a estrutura de sua tabela B

ex:

Tabela A (Tipo, Campo, Designação, ValAno, ValAnoAnt, Local, Id_i)

a tabela B poderia possui o seguinte formato:

ao invés de vc criar campos igual ao que vc criou (A5001,A5002) vc poderia fazer assim

Tabela B (Nipc, Ano, Campo, Valor)


Onde os dados seriam salvos assim

NIpc |Ano |Campo |Valor | ID
123456789 |2010 |5001 |12 | 1
123456789 |2010 |5002 |15 | 1
123456789 |2010 |5003 |25 | 1


da forma acima descrita bastaria vc comparar os campos [Ô]Campo[Ô], e [Ô]ID[Ô] usando Inner join
ou seja

select A.*, B.* from A inner join B on A.ID_i = B.ID where A.Campo = B.Campo


e teria o resultado esperado, espero que tenha entedido



Tópico encerrado , respostas não são mais permitidas