I wanted to make my INSERT dynamic, which does not require me to change the ids manually.
I have this script that returns all PRODUCTS that do not have a relationship with the table EST_PROD_PRECO_CUSTO_EMPRESA
SELECT prod.ID_PRODUTO AS "ID DO PRODUTO" FROM ERP.EST_PRODUTO prod
LEFT JOIN ERP.EST_PROD_PRECO_CUSTO_EMPRESA prodEmp ON prodEmp.ID_PRODUTO =
prod.ID_PRODUTO
GROUP BY prod.ID_PRODUTO
HAVING COUNT(prodEmp.ID_PRODUTO) !=83
My return and 22 data (PRODUCT_ID), made this need another script to return the companies that are not related to these product_ID in the table_PROD_PRECO_CUSTO_EMPRESA. for me to create an insert and make that relationship.
SELECT DISTINCT emp.ID_EMPRESA FROM ERP.CF_EMPRESA emp
WHERE EMP.ID_EMPRESA NOT IN (select emp.id_empresa FROM
ERP.EST_PROD_PRECO_CUSTO_EMPRESA prd
LEFT JOIN ERP.EST_PRODUTO prod ON prod.ID_PRODUTO = prd.ID_PRODUTO
INNER JOIN ERP.CF_EMPRESA emp ON prd.ID_EMPRESA = emp.ID_EMPRESA
WHERE prod.ID_PRODUTO = 127011575) /*id que consegui no script a cima*/
With this return of ID_EMPRESA I create my INSERT. The id I use sequence with a trigger
INSERT INTO EST_PROD_PRECO_CUSTO_EMPRESA ( ID_PRODUTO, ID_EMPRESA,
CUSTO_OPERACIONAL, OUTRAS_DESPESAS)
VALUES (127011575, 793, 0, 0)
blz, but when I try to join the sql I have no precise result because it has product that has no relationship with company X, but the other product has no relationship with company Y but has with company X that the other product did not have
SELECT DISTINCT emp.ID_EMPRESA FROM ERP.CF_EMPRESA emp
WHERE EMP.ID_EMPRESA NOT IN
(SELECT emp.id_empresa FROM
ERP.EST_PROD_PRECO_CUSTO_EMPRESA prd
LEFT JOIN ERP.EST_PRODUTO prod ON prod.ID_PRODUTO = prd.ID_PRODUTO
INNER JOIN ERP.CF_EMPRESA emp ON prd.ID_EMPRESA = emp.ID_EMPRESA
WHERE prod.ID_PRODUTO IN(
SELECT prod.ID_PRODUTO AS "ID DO PRODUTO" FROM ERP.EST_PRODUTO prod
LEFT JOIN ERP.EST_PROD_PRECO_CUSTO_EMPRESA prodEmp ON
prodEmp.ID_PRODUTO = prod.ID_PRODUTO
GROUP BY prod.ID_PRODUTO
HAVING COUNT(prodEmp.ID_PRODUTO) !=83 ))
I do not know how to handle each ID_PRODUCT separately from the list until the end of it, my NOT IN does not differentiate each SELECT sub. Does anyone know a solution even with PL / SQL?