【问题标题】:fetching multiple data with sql query使用 sql 查询获取多个数据
【发布时间】:2013-08-28 11:09:26
【问题描述】:

我有一个标题和行详细信息表。比如;

头表:TRANSACTIONS 线路明细表:TRANSACTIONS_LINE_DETAIL

在 TRANSACTIONS 表中: 包括 SQ_TRANSACTION_ID、CH_TRANSACTION_NAME、.. 列。

在 TRANSACTIONS_LINE_DETAIL 表中: 包括 SQ_TRANSACTION_LINE_DETAIL_ID、RF_TRANSACTION_ID、CH_LINE_CODE、.. 列。

TRANSACTIONS_LINE_DETAIL 表为保存在 TRANSACTIONS 表中的每个事务保留一个或多个详细信息行。

所以我的问题是;

我想编写一个查询来获取包含 X、Y 和 Z 行代码的交易。 (CH_LINE_CODE)。

我是这样写的;

SELECT DISTINCT 
   TR.RF_TRANSACTION_ID
FROM
   TRANSACTIONS_LINE_DETAIL TR
WHERE
   TR.CH_LINE_CODE IN ('X','Y','Z')

但此代码可能会返回没有“Y”或“X”或“Z”的交易。我的意思是我希望我的事务中包含所有行代码。

我想要一个可以获取交易的查询

X、Y、Z

A、B、C、X、Y、Z

X、Y、Z、P

不是

X

X,Y

Z、Y、A、B

.

【问题讨论】:

    标签: sql oracle plsql plsqldeveloper


    【解决方案1】:

    您可能会发现这个很有用。这里是SQL Fiddle

    SELECT rf_transaction_id
      FROM transactions_line_detail
     WHERE ch_line_code IN ('X', 'Y', 'Z')
     GROUP BY rf_transaction_id
    HAVING COUNT(1) = 3
    

    【讨论】:

    • 谢谢!成本要低得多。
    【解决方案2】:

    试试这个

    Select * From TRANSACTIONS_LINE_DETAIL td
    Where 
      Exists 
        ( Select 1 From TRANSACTIONS_LINE_DETAIL td2
          Where td2.RF_TRANSACTION_ID = td.RF_TRANSACTION_ID
            And td2.CH_LINE_CODE = 'X'
        )
      And 
      Exists 
        ( Select 1 From TRANSACTIONS_LINE_DETAIL td2
          Where td2.RF_TRANSACTION_ID = td.RF_TRANSACTION_ID
            And td2.CH_LINE_CODE = 'Y'
        )
      And 
      Exists 
        ( Select 1 From TRANSACTIONS_LINE_DETAIL td2
          Where td2.RF_TRANSACTION_ID = td.RF_TRANSACTION_ID
            And td2.CH_LINE_CODE = 'Z'
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多