有人可以帮我解决这个子查询问题吗?

时间:2020-03-21 05:36:44

标签: sql

我需要获得预期的输出,但是我们必须使用强制性的子查询。我没有子查询就得到了预期的输出,但是我只是无法弄清楚如何通过子查询来获得它。 我已经附上了ER图和预期的输出。

问题描述: 列出来自“泰米尔纳德邦”的所有客户帐户进行的所有类型RD帐户交易的完整详细信息。 (使用子查询)

在不使用子查询的情况下查询预期输出:

select bt.*
from bank_transaction bt,bank_rd_account bra, bank_customer bc, bank_cust_contact bcc
where bt.trans_acc_no=bra.account_no
and bra.rd_cust_id=bc.cust_id
and bc.cust_id=bcc.cust_id
and cust_state='Tamilnadu'
order by trans_dt;

Expected Output ER diagram

3 个答案:

答案 0 :(得分:2)

如果我对您的要求正确无误,那么以下逻辑应有助于您获得所需的输出。

为此目的,使用适当的连接是最佳选择。但是,根据需要使用子查询解决此问题,可以考虑以下示例代码。

SELECT *
FROM bank_transaction bt
WHERE bt.trans_acc_no IN
(
    SELECT bra.account_no
    FROM bank_rd_account bra
    INNER JOIN bank_customer bc 
        ON bra.rd_cust_id=bc.cust_id
    INNER JOIN bank_cust_contact bcc 
        ON bc.cust_id=bcc.cust_id
        and cust_state='Tamilnadu'
)

答案 1 :(得分:1)

尝试以下代码:

SELECT * FROM BANK_TRANSACTION bt  
WHERE bt.TRANS_ACC_NO IN  
(  
  SELECT bra.ACCOUNT_NO  
  FROM BANK_RD_ACCOUNT bra, BANK_CUSTOMER bc  
  WHERE bra.RD_CUST_ID = bc.CUST_ID  
  AND bc.CUST_ID = (SELECT bcc.CUST_ID FROM BANK_CUST_CONTACT bcc    
                    WHERE bcc.CUST_ID = bc.CUST_ID     
                    AND CUST_STATE='Tamilnadu')  
);

答案 2 :(得分:0)

SELECT * FROM bank_transaction t 
WHERE t.trans_acc_no IN(SELECT r.account_no 
        FROM bank_rd_account r, bank_customer c, bank_cust_contact cc 
        WHERE r.rd_cust_id = c.cust_id 
        AND c.cust_id = cc.cust_id 
        AND cc.cust_state = 'Tamilnadu') 
ORDER BY trans_no;