Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite.
Tenho um bd com 2 tabelas. A primeira (serv_os) tem as colunas id, fk_os e fk_servico a segunda (prod_os) tem as colunas id, fk_os e agora eu criei a coluna fk_serv. A coluna fk_serv vai ser preenchida com o valor id da primeira coluna. Fiz o seguinte update entre as tabelas:
UPDATE prod_os
JOIN serv_os ON serv_os.fk_os= prod_os.fk_os
SET prod_os.fk_serv = serv_os.id
WHERE prod_os.fk_os=serv_os.fk_os;
Até aqui tudo bem, porém, fiquei com o seguinte problema. Muitas vezes existem vários serviços na primeira tabela, por exemplo id=100 produto A, id=101 produto B, porém o fk_os é o mesmo . Ai na coluna fk_serv aparece sempre o id do produto A. Nesse caso duas vezes. O produto B, C,...etc não aparece.
Não consegui nenhum comando, já que o join é pela coluna fk_os, que fizesse o update mudar o ponteiro para o serviço B,C,etc.
Se alguém puder me ajudar eu agradeço.@Jack Oliveira muito obrigado pela completíssima orientação. Vou implementá-la. Abraços.
1 Etapa: Atualizar com o Serviço Mais Recente
JOIN ( ) AS latest_serv ON prod_os.fk_os = latest_serv.fk_os JOIN ( ) AS first_serv ON prod_os.fk_os = first_serv.fk_os JOIN ( ) AS selected_serv ON prod_os.fk_os = selected_serv.fk_os JOIN ( ) AS selected_serv ON prod_os.fk_os = selected_serv.fk_os JOIN ( ) AS specific_serv ON prod_os.fk_os = specific_serv.fk_os FROM prod_os p JOIN serv_os s ON p.fk_os = s.fk_os JOIN ( ) AS selected_serv ON prod_os.fk_os = selected_serv.fk_os class Database {// Atualiza fk_serv com o id do serviço mais recente para cada fk_os
$sql = "
try {
} catch (Exception $e) {
// Atualiza fk_serv com o id do primeiro serviço encontrado para cada fk_os
$sql = "
try {
} catch (Exception $e) {
// Atualiza fk_serv com base em um critério específico para cada fk_os
$sql = "
$params = ['descricao' => 'Serviço X']; // Defina o critério de serviço
try {
} catch (Exception $e) {
// Verifica o resultado da atualização
$sql_check = "
try {
} catch (Exception $e) {
$db->conn = null; // Fecha a conexão com o banco de dados
class Database {
// Conectar ao banco de dados
$db = new Database();
// Atualiza fk_serv com o id do serviço mais recente para cada fk_os
$sql = "
try {
} catch (Exception $e) {
// Atualiza fk_serv com o id do primeiro serviço encontrado para cada fk_os
$sql = "
try {
} catch (Exception $e) {
// Atualiza fk_serv com base em um critério específico para cada fk_os
$sql = "
$params = ['descricao' => 'Serviço X']; // Defina o critério de serviço
try {
} catch (Exception $e) {
// Verifica o resultado da atualização
$sql_check = "
try {
} catch (Exception $e) {
// Fechar a conexão com o banco de dados