1

私はc#アプリケーションを開発しています。OLEDB 接続を使用しています。

次の2つのテーブルがあります>>

支払い

AdmissionNumber  | StudName |

       1            John
       2            Smith

支払詳細

   AdmissionNumber  | RemainingFee |    Date         | Payment

        1                5000         10/10/2012         3000
        1                3000         10/11/2012         2000
        2                4000         15/11/2012         3000
        1                1000         10/12/2012         2000

これで、次のようにテーブル結果を取得したい>>

 AdmissionNumber | Name | Date           |RemainingPayment|Payment|
       1           John    10/12/2012          1000         2000

この場合、入場番号と日付は、テキスト ボックスと datetimepicker を介してフォームに既に提供されています。

4

3 に答える 3

2

この場合、入場番号と日付は、テキスト ボックスと datetimepicker を介してフォームに既に提供されています。

したがって、特定の入場番号と日付を検索する必要があります。もしそうなら、これを試してください:

SELECT 
  p.AdmissionNumber,  
  p.Name,   
  pd.Date,
  pd.RemaingFee AS RemainingPayment,
  pd.Payment
FROM Payment p
INNER JOIN PaymentDetails pd ON p.AdmissionNumber = pd.AdmissionNumber
WHERE p.AdmissionNumber = @AdmissionNumberParamFromTxtBox
  AND pd.Date           = @DateParamFromTheotherTextBox;
于 2012-11-06T06:44:45.033 に答える
1

これにより、正確な結果が得られます。マスターと詳細の最後のレコードの一致。詳細に主キー列が必要です。

Select  *
    From    Payment
    Left    Outer   Join
        PaymentDetail
    On  PaymentDetail.Id        =   (
        Select  Top 1
            A.Id
            From    PaymentDetail   As  A
            Where   A.AdmissionNumber   =   Payment.AdmissionNumber
            Order   By  A.Date  Desc
    )

乾杯

于 2012-11-06T06:44:39.203 に答える
0
SELECT 
  p.AdmissionNumber,  
  p.Name,
  MAX(pd.Date) AS Date,
  pd.RemaingFee AS RemainingPayment,
  pd.Payment
FROM Payment p
INNER JOIN PaymentDetails pd ON p.AdmissionNumber = pd.AdmissionNumber
GROUP BY p.AdmissionNumber,pd.Payment,p.Name,pd.RemaingFee
于 2012-11-06T06:49:26.113 に答える