1

こんにちは私はチケットの詳細を行ごとに保存するデータベースを持っています。たとえば、誰かがクーポンを使ってサービスを購入し、ギフトカードを購入した場合、そのトランザクションは3つの別々のテーブルエントリに分割されます...たとえば、以下のクエリでチケット番号「m123」を検索すると、以下の結果を取得します。

Select *
FROM            TicketsDetails
WHERE        (sTicket_Number = 'M123')

Ticket  Description Amount
M123    BOGO        15
M123    Service 1   -15
M123    GC Service 1    15
M123    $5 OFF      -5

現在のクエリと出力:

SELECT        t1.sTicket_Number, t1.sDescription, t1.sUserName, t2.sDescription AS Second_description
FROM            TicketsDetails AS t1 INNER JOIN
                         TicketsDetails AS t2 ON t1.sTicket_Number = t2.sTicket_Number
WHERE        (t1.sDescription = '$5 OFF') AND (t2.sDescription = 'BOGO')


M100304 $5 OFF  Kenny   BOGO
M100304 $5 OFF  Kenny   BOGO
M100542 $5 OFF  Kenny   BOGO
M103706 $5 OFF  Kenny   BOGO
M132464 $5 OFF  Dante   BOGO
M132464 $5 OFF  Dante   BOGO
M132501 $5 OFF  Dante   BOGO
M132501 $5 OFF  Dante   BOGO
M132528 $5 OFF  Dante   BOGO
M133892 $5 OFF  Raynon  BOGO
M133892 $5 OFF  Raynon  BOGO
M134067 $5 OFF  Raynon  BOGO
M134067 $5 OFF  Raynon  BOGO

私がやりたいのは、「bogo」と「$5off」の説明が付いているチケット番号を返すことです。同じチケット番号の別々のエントリなので、これは可能ですか?

4

2 に答える 2

1

次のようなものを試してください(ロジックは機能しているようですが、正確な列名を持つテーブルでこれを試していなかったため、タイプミスがある可能性があります):

SELECT *
FROM TicketDetails as t1
INNER JOIN TicketDetails as t2
ON t1.Ticket = t2.Ticket
WHERE t1.Description='BOGO' AND t2.Description='$5 OFF'

内部結合は、説明のすべての組み合わせを作成してから、BOGOの説明と$5OFFの説明の両方を持つ行を探す必要があります。

于 2012-08-02T01:14:00.807 に答える
0
SELECT * 
FROM TicketDetails 
WHERE sTicket_Number = 'M123' AND 
    (Description ='BOGO' OR Description = '$5 OFF')

- - 編集 - -

あなたのコメントの説明によると、あなたはおそらくこれが欲しいでしょう:

SELECT * 
FROM TicketDetails 
WHERE Description ='BOGO' OR Description = '$5 OFF'
于 2012-08-02T01:08:58.520 に答える