php - 使用 PHP 在 MySQL 查询期间获取连接数据

标签 php mysql

我的环境:

我有这些表:

___计费:

|----------|----------|----------|--------------|---------------------|
| 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/

相关文章:

mysql - 使用Perl在mysql中使用空格查询字符串

php - MySQL 时间戳转 PHP 日期时间

php - Codeigniter join 返回同一记录三次

php - 本地主机拒绝连接Xampp问题

mysql - 将 Mysql 转换为 No sql 数据库

mysql - 使用 cakephp 3.X 引用表格本身

mysql - CakePHP:设置 ACL 允许/拒绝不起作用(表未更新)?

php - 为什么我的 binary(64) 60 字符密码哈希在 phpmyadmin 中显示为 60 个字符,但在导出时最后有四个 '\0'?

java - 如何将秒表 JavaScript 中的数据存储到 MySQL

php - 将鼠标悬停在图像上,获取打印对话框?