我有两个表,arrc_PurchActivity和arrc_Voucher。购买活动表包含每次购买的多个记录,通过信用卡授权捆绑在一起。我需要每次购买返回一行,并从凭证表中提取一个字段。 如果我只是从购买活动表中获取一些字段,如下所示:
SELECT group_concat( VoucherID ) , CcAuthCode FROM arrc_PurchaseActivity GROUP BY CcAuthCode
它工作正常,返回这样的东西:
group_concat( VoucherID ) | CcAuthCode
=========================================
610643,611139,610642 | 8LUPDN
我需要做的是拉入另一个连续字段(VoucherNbr),这次来自arrc_Voucher表,其中凭证表的VoucherID等于购买表的VoucherID。在这种情况下,因为VoucherID是串联,我需要为连接列中的每个VoucherID返回一个连续的VoucherNbr列。清楚如泥,对吗?我需要的是这样的:
group_concat( VoucherID ) | group_concat( VoucherNbr) | CcAuthCode
===========================|============================|=============
610643,611139,610642 | 123,456,789 | 8LUPDN
换句话说,VoucherID 6106的VoucherNbr为123,611139的VoucherNbr为456等。
任何人都可以帮助我吗?这是我的头脑......
答案 0 :(得分: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
我在GROUP_CONCAT中为voucherid指定了DISTINCT
,因为你可能有多个vouchernbr到一个voucherid。如果没有,请删除DISTINCT。
LEFT JOIN可确保您获得ARRC_PURCHASEACTIVITY
中没有支持记录的ARRC_VOUCHER
条记录。如果您不想要此行为,请将“LEFT JOIN”更改为“JOIN”。