1

我有两个表,arrc_PurchActivity 和 arrc_Voucher。购买活动表包含每次购买的多条记录,由信用卡授权绑定在一起。我需要每次购买返回一行,并从凭证表中提取一个字段。如果我只是从购买活动表中获取一些字段,如下所示:

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

DISTINCT在 GROUP_CONCAT 中为凭证 ID 指定了 ,因为您可能有多个凭证到一个凭证 ID。如果不是,请删除 DISTINCT。

LEFT JOIN 确保您将获得ARRC_PURCHASEACTIVITY没有支持记录的记录ARRC_VOUCHER。如果您不想要这种行为,请将“LEFT JOIN”更改为“JOIN”。

于 2010-09-27T17:18:38.870 回答