如何加入三张桌子?

时间:2009-11-26 05:35:42

标签: sql

SELECT
    PC_SL_ACNO,        -- DB ITEM
    SLNAME,                -- ACCOUNT NAME:
    SL_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

帐户名称:

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;

总金额:

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;

我如何加入这三张桌子?

1 个答案:

答案 0 :(得分:2)

您必须根据您的查询或查询的准确标准和必填字段进行调整。

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

我注意到在第一个查询中,您有pc_comp_code作为搜索条件,并且在分组的前沿 - 您需要的是什么?

由于你问题的神秘性,这是一个“估计”!