首先對長標題表示歉意,但是我找不到另一個合適的標題 作爲我要解釋的請求: 在db中有3個表格,一個提供文件標題,一個用於相關詳細信息, ,第三個用於不同類型文檔之間的「鏈接」(例如,如果有 交貨單後跟發票,通常在最後生成該月份,將所有 分組的所有月份交貨單)。 表和字段參與被稱爲:在同一張表中搜索另一張表中的常見記錄的更新記錄
+ DO11_DOCTESTATA (for the headers)
- DO11_DOCUM_MG36 Gives the type of the document stored (I need to retrieve data from 'FOR-FATRIEPDDT' and insert into 'FOR-DDT'
- DO11_NUMDOC Contains the number of the document, needed to search WHERE do11_numdoc = equals the same number in DO33_DOCCORPORIF
+ DO30_DOCCORPO (for the details)
- DO30_PREZZO1 Contains the unity price, when I have a match between do11_numdoc = do33_doccorporif.do33_numnsdoc, I update this field)
- DO30_PREZZO1IVA Same as before, but price added with VAT
- DO30_IMPORTO Price * Quantity
- ...
- ...
+ DO33_DOCCORPORIF (for the links)
- DO33_NUMNSDOC Which contains the number of the relative delivery note that I need to compare to DO11_DOCTESTATA.DO11_NUMDOC to find a match
我的要求是,因爲我需要更新從發票 價格,並把相同的值在相應的送貨單,通過匹配中找到的數量更新DO30_DOCCORPO某些領域DO11_DOCTESTATA.DO11_NUMDOC與同場 在DO33_DOCCORPORIF.DO33_NUMNSDOC
當找到一個匹配,我需要更新DO30_DOCCORPO,其中DO11_DOCTESTATA =「FOR-DDT」意思是我更新的數據字段只有當 文檔類型是送貨單('FOR-DDT')。
我已經成功創建了SELECT查詢,它提供了我需要更新的數據,但是我無法將此查詢「轉換」爲更新,因爲我缺少SQL語言的經驗 。這是SELECT查詢
SELECT do11_doctestata.do11_docum_mg36,
do11_doctestata.do11_datadoc,
do11_doctestata.do11_numdoc,
do11_doctestata.do11_sezdoc,
do33_doccorporif.do33_numnsdoc,
do30_doccorpo.do30_codart_mg66,
do30_doccorpo.do30_qta1,
do30_doccorpo.do30_prezzo1,
do30_doccorpo.do30_prezzo1iva,
do30_doccorpo.do30_importo,
do30_doccorpo.do30_importoiva,
do30_doccorpo.do30_impnetscp
FROM do11_doctestata
INNER JOIN do33_doccorporif
ON do11_doctestata.do11_numdoc = do33_doccorporif.do33_numnsdoc
INNER JOIN do30_doccorpo
ON do11_doctestata.do11_ditta_cg18 =
do30_doccorpo.do30_ditta_cg18
AND do11_doctestata.do11_numreg_co99 =
do30_doccorpo.do30_numreg_co99
WHERE (do11_doctestata.do11_docum_mg36 = 'FOR-DDT')
和here是結果的樣品。突出顯示的行是我需要更新 典型行,但只有當DO11_NUMDOC和DO33_NUMNSDOC匹配的數字
編輯:還停留在這個問題上 編輯:使用folllowing代碼:
MERGE INTO DO30_DOCCORPO A
USING DO30_DOCCORPO_TEMP B
ON A.DO30_PROGRIGA = B.DO30_PROGRIGA
AND A.DO30_NUMREG_CO99 = B.DO30_NUMREG_CO99
AND A.DO30_DITTA_CG18 = B.DO30_DITTA_CG18
AND A.DO30_CAUSMAG_MG51 = '9999'
WHEN MATCHED THEN
UPDATE
SET DO30_PREZZO1 = B.DO30_PREZZO1,
DO30_PREZZO1IVA = B.DO30_PREZZO1IVA,
DO30_IMPORTO = B.DO30_IMPORTO,
DO30_IMPORTOIVA = B.DO30_IMPORTOIVA,
DO30_IMPNETSCP = B.DO30_IMPNETSCP;
我管理讓管理工作室做一些事情。事實上,在執行後,它說,「行受到影響:1」,但還是有一個問題:該行
AND A.DO30_CAUSMAG_MG51 = '9999' should update WHERE DO30_CAUSMAG_MG51 = '100'
所以當值是「9999」,但更新行,其中同一列有「100應該讀'作爲價值
不,更新應該在DO30_DOCCORPO上運行。在那裏,有記錄DO30_PREZZO1,等等,應該更新 –
我在你的評論後編輯我的答案。這是你想要的? –
應該可以,但作爲最後一個請求,我應該在SET部分放什麼? SET DO30_DOCCORPO.DO30_IMPORTO = ???我如何檢索要設置的價格? –