1

arrc_PurchActivityとarrc_Voucherの2つのテーブルがあります。購入アクティビティテーブルには、クレジットカードの承認によって結び付けられた、購入ごとの複数のレコードが含まれています。購入ごとに1行を返す必要があります。さらに、バウチャーテーブルからフィールドを取得します。次のように、購入アクティビティテーブルからいくつかのフィールドを取得すると、次のようになります。

SELECT group_concat( VoucherID ) , CcAuthCode FROM arrc_PurchaseActivity GROUP BY CcAuthCode

それは正常に動作し、次のようなものを返します。

group_concat( VoucherID )  | CcAuthCode
=========================================
610643,611139,610642       | 8LUPDN

私がする必要があるのは、今度はarrc_Voucherテーブルから別の汚染されたフィールド(VoucherNbr)をプルすることです。ここで、バウチャーテーブルのVoucherIDは購入テーブルのVoucherIDと同じです。この場合、VoucherIDは連結であるため、連結列のVoucherIDごとにVoucherNbrの連結列を返す必要があります。泥のように澄んでいますよね?必要なものは次のようになります。

group_concat( VoucherID )  | group_concat( VoucherNbr)  |  CcAuthCode
===========================|============================|=============
610643,611139,610642       | 123,456,789                |  8LUPDN 

つまり、VoucherID 610643のVoucherNbrは123、611139のVoucherNbrは456などです。

誰かが私を助けることができますか?これは私の頭の上の方法です...

4

1 に答える 1

2

使用する:

   SELECT pa.ccauthcode,
          GROUP_CONCAT(DISTINCT pa.voucherid) AS voucherids,
          GROUP_CONCAT(v.vouchernbr) AS vouchernbrs
     FROM ARRC_PURCHASEACTIVITY pa 
LEFT JOIN ARRC_VOUCHER v ON v.voucherid = pa.voucherid
 GROUP BY pa.ccauthcode

DISTINCT1つのバウチャーIDに複数のバウチャーンbrがある可能性があるため、バウチャーIDのGROUP_CONCATでを指定しました。そうでない場合は、DISTINCTを削除します。

LEFT JOINを使用するとARRC_PURCHASEACTIVITY、にサポートレコードがないレコードを確実に取得できますARRC_VOUCHER。この動作を望まない場合は、「LEFTJOIN」を「JOIN」に変更してください。

于 2010-09-27T17:18:38.870 に答える