DEVLOGIN
DEVLOGIN

Reputation: 87

INNER JOIN WITH DELETE

I want to make this query on oracle but I got

00933. 00000 -  "SQL command not properly ended"

DELETE  FROM DYNAMIC_EXTRACT_DETAILS  DED
INNER JOIN DYNAMIC_CATEGORIE_DETAILS  DCD ON DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie
WHERE EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND DED.EXTRACT_ID = :i_id_extract

There is a solution ? Thanks for helping

Upvotes: 0

Views: 130

Answers (2)

Tim Biegeleisen
Tim Biegeleisen

Reputation: 522762

You could also phrase your delete using a correlated subquery:

DELETE
FROM DYNAMIC_EXTRACT_DETAILS DED
WHERE EXISTS (SELECT 1 FROM
              DYNAMIC_CATEGORIE_DETAILS DCD
              WHERE DED.EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND
                    DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie) AND
      EXTRACT_ID = :i_id_extract;

Upvotes: 3

Ankit Bajpai
Ankit Bajpai

Reputation: 13527

Please try merge into -

MERGE INTO DYNAMIC_EXTRACT_DETAILS
USING DYNAMIC_CATEGORIE_DETAILS
ON (DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie)
WHEN MATCHED THEN
     DELETE
WHERE EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND DED.EXTRACT_ID = :i_id_extract;

Upvotes: -1

Related Questions