Associação entre tabelas

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Pablo Moraes
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 19 Abr 2013 11:12 am

Olá... Estou 'tentando' fazer um relatório dentro do meu sistema que exiba um demonstrativo completo de alterações em um pedido de venda. Ex.: No pedido xxx houve corte/falta de um determinado item mas o mesmo pode ser substituído OU não. Consegui pegar algumas tabelas (log, pedidos, mensagens enviadas aos palms) e consegui os dados que busquei. Só tem um problema: Eu associei a tabela de logs com a tabela de mensagens enviadas, que é onde vou buscar a informação do MOTIVO do corte e isso está dando certo SE eu realmente tiver algum corte no pedido. A tabela de mensagens enviadas não contempla as inclusões, somente exclusões, portanto, SE eu não tiver exclusão, devido a associação que fiz, os resultados vão vir nulos, mesmo que tenha uma inclusão.

Vou colocar aqui o pequeno 'rascunho' que fiz:

Selecionar tudo

SELECT PCLOGALTERACAODADOS.DATA, SUBSTR(PCLOGALTERACAODADOS.OBSERVACOES,1,7),
SUBSTR(PCLOGALTERACAODADOS.VALORALFA,INSTR(PCLOGALTERACAODADOS.VALORALFA,' '),8), PCPRODUT.DESCRICAO,
SUBSTR(PCLOGALTERACAODADOS.OBSERVACOES,INSTR(PCLOGALTERACAODADOS.OBSERVACOES,': ')+2,50), PCPEDC.NUMNOTA, 
PCPEDC.CODCLI, PCCLIENT.CLIENTE, PCPEDC.NUMCAR, PCPRODUT.EMBALAGEM, PCPEDC.OBS1, PCPEDC.OBS2, PCPEDC.OBSENTREGA1, PCCARREG.DESTINO,
PCEMPR.NOME, PCPEDC.CONDVENDA, PCPEDC.CODUSUR, PCUSUARI.NOME, PCCARREG.DESTINO,sUBSTR(PCMENS.MENS2,INSTR(PCMENS.MENS2,'VALOR: ')+19,20), 
SUBSTR(PCMENS.MENS3,INSTR(PCMENS.MENS3,': ')+2,3), SUBSTR(PCMENS.MENS4,INSTR(PCMENS.MENS4,': ')+2,50)
FROM PCLOGALTERACAODADOS, PCPRODUT, PCPEDC, PCCLIENT, PCCARREG, PCEMPR, PCUSUARI, PCMENS
WHERE PCLOGALTERACAODADOS.OBSERVACOES LIKE '%4009848%'
AND PCPRODUT.CODPROD = SUBSTR(PCLOGALTERACAODADOS.VALORALFA,INSTR(PCLOGALTERACAODADOS.VALORALFA,' '),8)
AND PCPEDC.NUMPED = SUBSTR(PCLOGALTERACAODADOS.OBSERVACOES,INSTR(PCLOGALTERACAODADOS.OBSERVACOES,': ')+2,50)
AND PCPEDC.CODCLI = PCCLIENT.CODCLI
AND PCPEDC.numcar = PCCARREG.NUMCAR
AND PCPEDC.CODUSUR = PCUSUARI.codusur
AND SUBSTR(PCLOGALTERACAODADOS.OBSERVACOES,INSTR(PCLOGALTERACAODADOS.OBSERVACOES,': ')+2,50) = SUBSTR(PCMENS.MENS1,INSTR(PCMENS.MENS1,': ')+2,50)
AND PCMENS.CODFUNCEMITE = PCLOGALTERACAODADOS.codfunc
AND PCPEDC.CODFILIAL IN ('1')
AND PCLOGALTERACAODADOS.codfunc = PCEMPR.MATRICULA
AND PCLOGALTERACAODADOS.VALORALFAANT IS NULL
AND PCLOGALTERACAODADOS.CODROTINA = 336
ORDER BY PCLOGALTERACAODADOS.DATA
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Pablo,

Poderia publicar aqui a "estrutura reduzida" das duas tabelas que você precisa relacionar em um join?

Se elas apresentarem muitas colunas, basta remover das tabelas todas as colunas que você não precisa em seu JOIN.

E se possível, tente mostrar uma situação onde ocorre este problema. Eu diria para informar 3 comandos de INSERT nestas "tabelas reduzidas". Algo que gere esta duplicidade que você está descrevendo.

Talvez com estas informações, fique mais fácil para os foristas poderem ajudar você.

Abraços,

Sergio
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes