2009-11-26 11 views
0
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

@ Domnic: Можете ли вы обновить второй запрос (ИМЯ АККАУНТА) со ссылками на таблицы? Я не могу сказать, какой столбец относится к какой таблице. –

ответ

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 в качестве критерия поиска, и на переднем крае вашей группировки - это то, что вам нужно?

Это немного «оценка» из-за загадочной природы вашего вопроса!

Смежные вопросы