我的环境:
我有这些表:
表___计费
:
|----------|----------|----------|--------------|---------------------|
| BIL_Id | BIL_Item | BIL_Rate | BIL_Quantity | BIL_ApplicableTaxes |
|----------|----------|----------|--------------|---------------------|
| 1 | Hot-Dog | 4.50 | 2 | 3 |
| 2 | Tea | 3.25 | 3 | 3,4 |
|----------|----------|----------|--------------|---------------------|
BIL_Id
= 此表中此项的 ID。
BIL_Item
= 商品 ID(引用 ___SalesTaxes 表)。
BIL_Quantity
= 客户使用的商品数量。
BIL_ApplicableTaxes
= 该商品适用的税费 ID。每个税号均以逗号分隔。
表___SalesTaxes
:
|----------|--------------|------------|
| STX_Id | STX_TaxeName | STX_Amount |
|----------|--------------|------------|
| 3 | Tax 1 | 3.50 |
| 4 | Tax 2 | 6.55 |
|----------|--------------|------------|
STX_Id
= 此表中此项的 ID。
STX_TaxeName
= 税的名称。
STX_Amount
= 税费百分比金额。
我的问题:
如何从这两个表中循环进入 ___Billing
表以获得我需要应用的百分比税费?
例如:
对于第一行,我应该有:
3.50
。对于第二行,我应该有:
3.50, 6.55
。
希望问题很清楚。
谢谢。
最佳答案
如果您的查询措辞正确,您可以使用 MySQL 的 FIND_IN_SET()
函数将税号与 BIL_ApplicableTaxes
列中的 CSV 列表进行匹配:
SELECT t1.BIL_Id,
t1.BIL_Rate,
GROUP_CONCAT(COALESCE(t2.STX_Amount, 'NA')) AS tax_due
FROM ___Billing t1
LEFT JOIN ___SalesTaxes t2
ON FIND_IN_SET(t2.STX_Id, t1.BIL_ApplicableTaxes) > 0
GROUP BY t1.BIL_Id
但是,您应该认真考虑规范 ___Billing
表并删除 CSV 数据。相反,每个税务条目都应该有自己的记录。
此处演示:
SQLFiddle
关于php - 使用 PHP 在 MySQL 查询期间获取连接数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41583260/