1

選択クエリの作成に問題があります。

以下の簡略版で示した表があります。私が示したものよりも多くの列がありますが、このクエリに関係のないものは省略しました.

ID   ReceiptNo  TransactionType 
--------------------------------
 1 | 2SJ1532   |  SALE
 2 | 8UG7825   |  SALE
 3 | 0619373   |  SALE
 4 | 8UG7825   |  RFND
 5 |           |  TEST

トランザクション タイプが「SALE」で、選択した行の ReceiptNo がトランザクション タイプ RFND の行にも表示される行のみを選択したいと考えています。

上記の例では、行 2 を選択します。トランザクション タイプが SALE であり、その ReceiptNo もトランザクション タイプ RFND の行に表示されるためです。

すべての SALE タイプのトランザクション タイプを選択する次のクエリがありますが、上記のように選択を機能させるにはサブクエリが必要だと思います。誰かがそれを助けることができれば、それは素晴らしいことです.

SELECT * FROM $table_name WHERE RecieptNo IS NOT NULL AND TRIM(RecieptNo) <>  '' AND   TransactionType = 'SALE'
4

3 に答える 3

1

これを試して:

SELECT * 
FROM $table_name
WHERE RecieptNo IN(SELECT RecieptNo 
                   FROM tablename
                   WHERE TransactionType IN('Sale', 'RFND')
                   GROUP BY RecieptNo 
                   HAVING COUNT( DISTINCT TransactionType) = 2);

これにより、選択したに と のRecieptNo両方のトランザクション タイプが含まれるようSaleになりRFNDます。

于 2013-02-22T09:32:18.920 に答える
1
SELECT *
FROM $table_name X1
WHERE X1.TransactionType = 'SALE'
AND EXISTS (
SELECT X2.ReceiptNo
FROM $table_name X2
WHERE X1.ReceiptNo=X2.ReceiptNo
AND X2.TransactionType = 'RFND'
)
于 2013-02-22T09:34:51.553 に答える
1
SELECT t.*
FROM your_table t
JOIN your_table t2 ON t2.TransactionType = 'RFND' AND t2.ReceiptNo=t.ReceiptNo
GROUP BY t.ID
于 2013-02-22T10:14:22.407 に答える