Update with double joins

自作多情 提交于 2019-12-25 03:47:17

问题


I have an access query that I need to have converted to Oracle. And in access, it uses an inner join that is within an inner join. I am not an expert at any of this, but I only learned Oracle to an extent and practically nothing in access. (and is not my access string either (creator of it died a year back)). And I have no choice in its conversion to oracle... it just needs to get done. :/

anyhow... here is the string:

UPDATE AIRMODEL_NETWORK_SUMMARY
  INNER JOIN (HISTORY_BOL
    INNER JOIN PERIOD_TO_PROCESS
    ON
      (HISTORY_BOL.FSCL_WK_IN_YR_NUM = PERIOD_TO_PROCESS.FSCL_WK_IN_YR_NUM)
    AND
      (HISTORY_BOL.FSCL_YR_NUM = PERIOD_TO_PROCESS.FSCL_YR_NUM)
      )
  ON
    (AIRMODEL_NETWORK_SUMMARY.LOC_ID = HISTORY_BOL.TO_LOC_ID)
  AND
    (AIRMODEL_NETWORK_SUMMARY.FSCL_WK_IN_YR_NUM = HISTORY_BOL.FSCL_WK_IN_YR_NUM)
  AND
    (AIRMODEL_NETWORK_SUMMARY.FSCL_YR_NUM = HISTORY_BOL.FSCL_YR_NUM)
SET AIRMODEL_NETWORK_SUMMARY.CASES_RCVD = TOTAL_BOL_SHIP_CASE_QTY;

回答1:


Oracle likes it differently:

MERGE
INTO    AIRMODEL_NETWORK_SUMMARY
USING   (
  SELECT TOTAL_BOL_SHIP_CASE_QTY, ROWID AS r 
  FROM AIRMODEL_NETWORK_SUMMARY
  INNER JOIN HISTORY_BOL
  ON
    (AIRMODEL_NETWORK_SUMMARY.LOC_ID = HISTORY_BOL.TO_LOC_ID)
  AND
    (AIRMODEL_NETWORK_SUMMARY.FSCL_WK_IN_YR_NUM = HISTORY_BOL.FSCL_WK_IN_YR_NUM)
  AND
    (AIRMODEL_NETWORK_SUMMARY.FSCL_YR_NUM = HISTORY_BOL.FSCL_YR_NUM)
  INNER JOIN PERIOD_TO_PROCESS
    ON
      (HISTORY_BOL.FSCL_WK_IN_YR_NUM = PERIOD_TO_PROCESS.FSCL_WK_IN_YR_NUM)
    AND
      (HISTORY_BOL.FSCL_YR_NUM = PERIOD_TO_PROCESS.FSCL_YR_NUM)
)
ON      (rowid = r)
WHEN MATCHED THEN
UPDATE
SET     CASES_RCVD = TOTAL_BOL_SHIP_CASE_QTY;


来源:https://stackoverflow.com/questions/25496829/update-with-double-joins

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!