开发者

How to join three tables?

开发者 https://www.devze.com 2022-12-13 01:32 出处:网络
SELECT PC_SL_ACNO,-- DB ITEM SLNAME,-- ACCOUNT NAME: S开发者_JS百科L_TOTAL_AMOUNT-- TOTAL AMOUNT: FROM GLAS_PDC_CHEQUES
SELECT
    PC_SL_ACNO,        -- DB ITEM
    SLNAME,                -- ACCOUNT NAME:
    S开发者_JS百科L_TOTAL_AMOUNT  -- TOTAL AMOUNT:
FROM GLAS_PDC_CHEQUES
WHERE PC_COMP_CODE=:parameter.COMP_CODE 
    AND pc_bank_from = :block02.pb_bank_code 
    AND pc_due_date between :block01.date_from 
    AND :block01.date_to 
    AND nvl(pc_discd,'X') IN(‘X’,  'R') 
GROUP BY
    pc_comp_code, pc_sl_ldgr_code, pc_sl_acno
ORDER BY pc_sl_acno

ACCOUNT NAME:

BEGIN
  SELECT COAD_PTY_FULL_NAME INTO :BLOCK03.SLNAME
    FROM GLAS_PTY_ADDRESS,GLAS_SBLGR_MASTERS
   WHERE SLMA_COMP_CODE    = :PARAMETER.COMP_CODE
     AND SLMA_ADDR_ID = COAD_ADDR_ID
     AND SLMA_ADDR_TYPE = COAD_ADDR_TYPE
     AND SLMA_ACNO       = :BLOCK03.PC_SL_ACNO
     AND SLMA_COMP_CODE = COAD_COMP_CODE;
EXCEPTION WHEN OTHERS THEN NULL;
END;

TOTAL AMOUNT:

BEGIN
  SELECT SUM(PC_AMOUNT) INTO :SL_TOTAL_AMOUNT
    FROM GLAS_PDC_CHEQUES
   WHERE PC_DUE_DATE BETWEEN :BLOCK01.DATE_FROM AND :BLOCK01.DATE_TO
     AND PC_BANK_FROM = :block02.PB_BANK_CODE
     AND PC_SL_ACNO   = :BLOCK03.PC_SL_ACNO
     AND NVL(PC_DISCD,'X') = 'R'
     AND PC_COMP_CODE = :PARAMETER.COMP_CODE;
EXCEPTION WHEN OTHERS THEN :block03.SL_TOTAL_AMOUNT := 0;
END;

How can I join the three tables?


You'll have to adjust depending on precisely what criteria and required fields you have for your query or queries.

SELECT
       c.PC_SL_ACNO,
       a.COAD_PTY_FULL_NAME,
       SUM(c.PC_AMOUNT)
FROM
       GLAS_PDC_CHEQUES c
LEFT JOIN
       GLAS_SBLGR_MASTERS m
ON     (     c.PC_SL_ACNO     = m.SLMA_ACNO
         AND c.PC_COMP_CODE   = m.SLMA_COMP_CODE
       )
LEFT JOIN
       GLAS_PTY_ADDRESS a
ON     (     m.SLMA_ADDR_ID   = a.COAD_ADDR_ID
         AND m.SLMA_COMP_CODE = a.COAD_COMP_CODE
         AND m.SLMA_ADDR_TYPE = a.COAD_ADDR_TYPE
       )
WHERE 
       c.PC_COMP_CODE       = :PARAMETER.COMP_CODE
AND    c.PC_SL_ACNO         = :BLOCK03.PC_SL_ACNO
AND    c.PC_BANK_FROM       = :BLOCK02.PB_BANK_CODE
AND    NVL(c.PC_DISCD,'X') IN (‘X’, 'R')
AND    c.PC_DUE_DATE  BETWEEN :BLOCK01.DATE_FROM AND :BLOCK01.DATE_TO
GROUP BY
       c.PC_SL_ACNO, -- not sure which grouping exactly you need.
       a.COAD_PTY_FULL_NAME
ORDER BY
       c.PC_SL_ACNO

I notice that in the first query you have pc_comp_code as a search criterion, and on the leading edge of your grouping - is that what you need?

This is a bit of an 'estimate' due to the enigmatic nature of your question!

0

精彩评论

暂无评论...
验证码 换一张
取 消