如何在使用联接查询时查看一个表中的所有数据并在另一个表中进行筛选(oracle sql)

zf2sa74q  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(167)

一旦我执行分割,我希望看到以下三个东西:
1.来自CUSTOMERS的客户记录

  1. TRANSACTIONS中的所有客户交易记录行
    1.在事务处理5和6期间从采购部采购的物料
    我下面的查询除了第2点外,大部分都是正确的,因为它只返回事务5和6,而不是完整的列表。
SELECT * FROM customers c
INNER JOIN transactions t ON c.custid = t.custid
INNER JOIN purchaces p ON t.transid = p.transid
WHERE c.customer = 1234 AND t.trans_num IN (5,6)
ORDER BY t.trans_num
svmlkihl

svmlkihl1#

您在where陈述式中明确筛选记录5和6。您可以使用该条件LEFT JOIN采购数据表。您会取得所有交易,但采购数据行如果不属于交易5或6,就会是NULL。

SELECT * 
FROM customers c
INNER JOIN transactions t 
  ON c.custid = t.custid
LEFT JOIN purchaces p 
  ON t.transid = p.transid 
  AND t.trans_num IN (5,6)
WHERE c.customer = 1234 
ORDER BY t.trans_num

相关问题