Página 1 de 1
Tentei OUTER JOIN mas não deu, talvez por ser no INSERT
Enviado: 13 Set 2021 14:08
por JoséQuintas
Código: Selecionar todos
CREATE PROCEDURE ze_SenhaAddModule( cModule VARCHAR(60), cModuleOld VARCHAR(60) )
BEGIN
INSERT
INTO JPSENHA
( PWTYPE, PWFIST, PWLAST )
SELECT DISTINCT
'A', PWFIRST, cModule
FROM JPSENHA
WHERE PWTYPE='A' AND PWLAST = cModuleOld
AND NOT EXISTS ( SELECT PWLAST FROM JPSENHA AS B
WHERE PWTYPE = 'A' AND B.PWFIRST=JPSENHA.PWFIRST
AND PWLAST=cModule );
END
Qual o objetivo?
Vai liberar um módulo (cModule) para TODOS os usuários que tenham acesso a outro modulo (cModuleOld)
SELECT PWFIRST FROM JPSENHA WHERE PWTYPE='A' AND PWLAST=cModuleOld
Isto vai trazer os usuários com acesso ao módulo base
Até aqui tudo bem, iria inserir PWTYPE='A' AND PWFIRST=resultado anterior AND PWLAST=cModule
Mas queria testar se já existe, e só incluir se faltar.
À primeira vista, o comando acima funciona mas... o OUTER JOIN não seria adequado pra isso?
E é tudo encima da mesma tabela, o que atrapalha relacionamento.
Tentei OUTER JOIN mas não deu, talvez por ser no INSERT
Enviado: 13 Set 2021 14:13
por JoséQuintas
Por exemplo, porque este não aceita?
Pra mostrar cadastros sem financeiro.
Código: Selecionar todos
SELECT IDCADASTRO, CDNOME
FROM jpcadastro
outer join jpfinan on jpcadastro.idcadastro=jpfinan.ficadastro
Tentei OUTER JOIN mas não deu, talvez por ser no INSERT
Enviado: 13 Set 2021 15:55
por sergiosouzalima
Olá, Quintas!
Fiz um teste aqui usando MySql, e usei o LEFT JOIN.
Veja se ajuda.
Abraços!
Tentei OUTER JOIN mas não deu, talvez por ser no INSERT
Enviado: 13 Set 2021 17:17
por JoséQuintas
Obrigado pelo teste.
Tentando entender o OUTER JOIN, que achei que serviria pra isso, pra ser o contrário de INNER JOIN ou LEFT JOIN.
Nota: Outra opção seria usar o COUNT(FICADASTRO) AS QTD e GROUP BY IDCADASTRO HAVING QTD = 0, mas seria processar tudo pra obter a soma
Tentei OUTER JOIN mas não deu, talvez por ser no INSERT
Enviado: 14 Set 2021 01:30
por alxsts
Olá!
JoséQuintas escreveu:Tentando entender o OUTER JOIN, que achei que serviria pra isso, pra ser o contrário de INNER JOIN ou LEFT JOIN.
Não, este tipo de join não serve para o que você quer. Nada a ver...
SQL Joins
Veja:
What is UPSERT and how to do it in MySQL Isto funcionará se suas tabelas possuirem primary keys.
SQL Joins