0

私は3つのテーブルを持っています

FLUX_ISU_FORMULE

ID  NUMBER(38,0)
CPT_CODE    VARCHAR2(10 BYTE)
TYPE_ENERGIE    VARCHAR2(12 BYTE)
DATE_MODIFICATION   DATE

FLUX_ISU_FORMULE_CL

ID  NUMBER(38,0)
FRM_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE ID
DATE_DEBUT  DATE
DATE_FIN    DATE

FLUX_ISU_FORMULE_TAB_EQU

ID  NUMBER(38,0)
FRM_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE ID
FCL_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE_CL ID
CADRAN  NUMBER(38,0)
EQU_CODE    NUMBER(38,0)
COEFFICIENT NUMBER(38,0)

管理のルールに従って、テーブルからデータを削除する必要があります。

CADRAN = 1または4(他のテーブルは削除され、エラーメッセージは表示されません)。「EA」で始まるTYPE_ENERGIE(EAは大文字と小文字を受け入れる必要があります)、他のタイプのエネルギーは統合されません(他は削除されたテーブルであり、エラーメッセージはありません)。

私はこれをします

DELETE
FROM FLUX_ISU_FORMULE
INNER JOIN FLUX_ISU_FORMULE_CL
ON FLUX_ISU_FORMULE.ID = FLUX_ISU_FORMULE_CL.FRM_ID
INNER JOIN FLUX_ISU_FORMULE_TAB_EQU
ON FLUX_ISU_FORMULE_CL.FRM_ID = FLUX_ISU_FORMULE_TAB_EQU.FRM_ID
AND FLUX_ISU_FORMULE_CL.ID    = FLUX_ISU_FORMULE_TAB_EQU.FCL_ID
WHERE lower(FLUX_ISU_FORMULE.type_energie) NOT LIKE 'ea%'
AND (FLUX_ISU_FORMULE_TAB_EQU.CADRAN <> 1 AND FLUX_ISU_FORMULE_TAB_EQU.CADRAN  <> 4);

このエラーがあります:

Erreuràlalignedecommande:2、colonne:21 Rapport d'erreur:Erreur SQL:ORA-00933:la commande SQL ne se termine pascorrectement 00933. 00000-"SQLコマンドが正しく終了していません"*原因:
*アクション:

4

2 に答える 2

3

Oracleは、マニュアルに明確に記載されているDELETEステートメントのJOINをサポートしていません。

相互に関連する副選択を使用して書き直す必要があります。

于 2012-07-13T09:22:29.040 に答える
1
DELETE FROM FLUX_ISU_FORMULE  WHERE
(FLUX_ISU_FORMULE.ID) IN
(SELECT FLUX_ISU_FORMULE.ID
FROM FLUX_ISU_FORMULE
INNER JOIN FLUX_ISU_FORMULE_CL
ON FLUX_ISU_FORMULE.ID = FLUX_ISU_FORMULE_CL.FRM_ID
INNER JOIN FLUX_ISU_FORMULE_TAB_EQU
ON FLUX_ISU_FORMULE_CL.FRM_ID = FLUX_ISU_FORMULE_TAB_EQU.FRM_ID
AND FLUX_ISU_FORMULE_CL.ID    = FLUX_ISU_FORMULE_TAB_EQU.FCL_ID
WHERE lower(FLUX_ISU_FORMULE.type_energie) NOT LIKE 'ea%'
AND (FLUX_ISU_FORMULE_TAB_EQU.CADRAN <> 1 AND FLUX_ISU_FORMULE_TAB_EQU.CADRAN  <> 4));
COMMIT;
于 2012-07-13T09:48:50.800 に答える