如何将 4 sql 个查询组合成一个具有良好性能的查询?

How to combine 4 sql queries into a single query with good performance?

我有问题要解决。首先,我将这个问题分成几个部分,因此我分别编写了四个查询,但现在我需要将它们放在一起,就好像它是对 return 一个单一结果的单一调用。我该怎么做?

1) 我select按照分店和门店采购

SELECT CD_PURCHASE FROM TB_PURCHASE_STORE WHERE CD_BRANCH = ? AND CD_STORE = ?

2)我验证购买的促销期是否在当前日期(今天)内

SELECT CD_PURCHASE, DT_BEGIN_PROMOTION, DT_END_PROMOTION FROM TB_PURCHASE 
WHERE SYSDATE BETWEEN TO_DATE(DT_BEGIN_PROMOTION) AND TO_DATE(DT_END_PROMOTION)
   

3) 从购买代码中,我查看哪些产品是有效的

SELECT CD_PURCHASE, CD_PRODUCT FROM TB_PURCHASE_PRODUCT WHERE FL_ACTIVE = 1

4)最后,我return根据customer id

一些字段
SELECT CD_PURCHASE, CD_PRODUCT, ID_CUSTOMER, DT_LAST_PURCHASE 
FROM TB_PURCHASE_SALES WHERE ID_CUSTOMER = ?

您尝试过以下查询吗?我假设你想要所有表的 INNER JOIN,并且 CD_PURCHASE 在所有表中都是常见的 link,CD_PRODUCT 是 TB_PURCHASE_PRODUCT 之间的 link和 TB_PURCHASE_SALES.

SELECT TPS.CD_PURCHASE,
TP.CD_PURCHASE, TP.DT_BEGIN_PROMOTION, TP.DT_END_PROMOTION, 
TPP.CD_PURCHASE, TPP.CD_PRODUCT,
TPSS.CD_PURCHASE, TPSS.CD_PRODUCT, TPSS.ID_CUSTOMER, TPSS.DT_LAST_PURCHASE
FROM TB_PURCHASE_STORE TPS, 
TB_PURCHASE TP, 
TB_PURCHASE_PRODUCT TPP,
TB_PURCHASE_SALES TPSS
WHERE TPS.CD_BRANCH = ? AND TPS.CD_STORE = ?
AND TPS.CD_PURCHASE = TP.CD_PURCHASE
AND SYSDATE BETWEEN TO_DATE(TP.DT_BEGIN_PROMOTION) AND TO_DATE(TP.DT_END_PROMOTION)
AND TPP.CD_PURCHASE = TPS.CD_PURCHASE
AND TPP.FL_ACTIVE = 1
AND TPSS.CD_PURCHASE = TPS.CD_PURCHASE AND TPSS.CD_PRODUCT = TPP.CD_PRODUCT
AND TPSS.ID_CUSTOMER = ?