[RESOLVIDO] - Ir buscar dados a outra tabela

Bom dia,

Será que alguém me pode ajudar? Sei que isto pode ser feito com o relacionamento entre tabelas mas só me está a dar error #1452 quando tento criar a chave estrangeira.
É o seguinte: tenho 2 tabelas - tabelageral e tabelageral_novos. Na tabelageral_novos tenho os dados do utente atualizados e tem um campo ‘dadosatualizados’ onde aparece Sim. O ID de cada uma das tabelas é igual.
Como é que posso fazer aparecer na tabelageral (que é a principal) no campo dadosatualizados a informação que foi preenchida na outra tabela? Isto quando estou a ver os registos para saber se aquele utente tem os dados atualizados.
Qual é a melhor solução?

Se for usar em consultas só criar um SQL (INNER JOIN) entre as tabelas.

Se for usar em um controle ou formulário, crie um campo virtual com o tipo de dado do campo: número, texto, data, etc, marque ele
como ‘label’ e depois no OnLoad ou eventos Ajax, use o sc_lookup para trazer o valor do campo da outra tabela e colocar neste campo.

Obrigada Jailton. Estou a tentar fazer isso num formulário que é Mestre detalhe.
Tentei fazer dessa forma com um SQl que já tinha feito no SQL Builder. E deu certo.

sc_lookup(dadosact, “select tabelageral.ID, tabelageral_novos.ID,tabelageral_novos.dadosatualizados FROM tabelageral LEFT OUTER JOIN tabelageral_novos ON tabelageral.ID = tabelageral_novos.ID”);

Mas ele está a mostrar a palavra Array no campo dadosact (campo que criei do tipo label). O que estou a fazer mal?

// Colocar no OnLoadRecord do filho do Mestre.

/* Macro sc_lookup */

$sql ="
SELECT
tabelageral.ID,
tabelageral_novos.ID,
tabelageral_novos.dadosatualizados
FROM
tabelageral LEFT OUTER JOIN tabelageral_novos ON tabelageral.ID = tabelageral_novos.ID
";

sc_lookup(tb_novos, $sql)

/* Erro no lookup /
if (FALSE === {tb_novos}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({tb_novos})) { /
EOF */

// CONTINUA...

}
else {

/* Inclua aqui sua rotina de processamento */

{dadosact} = {tb_novos[0][2]}; // << Veja se o nome do campo que vai receber o valor é {dadosact}

}

Jailton,

Não estou a entender o que é tb_novos (é a minha tabelageral_novos?).
Quando fala em rotina é para dizer em que coluna está o campo dadosatualizados?

tb_novos é só uma variável qualquer para receber os dados da sql.

Se concentra no que tá em $sql =

E lá embaixo no campo que vai receber o retorno: {dadosact} veja se é esse mesmo.

Entendi. E sim, o campo que vai receber o valor é {dadosact}.
Mas não estou a entender o que quer dizer com rotina de processamento.

/* esses símbolos em PHP /* são usados para Observação, você pode colocar qualquer coisa que quiser neles, não são relevantes.

No seu SQL também esta faltando um WHERE para filtrar o ID da tabela Geral que esta aberta no momento.

WHERE
tabelageral.ID = {ID}

Jailton deu certo!!!
Faltava mesmo isso. Obrigada. Agora já estão a aparecer os registos que foram atualizados na tabelageral_novos.
Obrigada pela sua ajuda!!! :slight_smile: