gpt4 book ai didi

php - 用外键的结果替换值

转载 作者:行者123 更新时间:2023-11-29 02:53:11 25 4
gpt4 key购买 nike

我有一个表格,其中包含我所有的发票项目:

              Table: invoice_items

invoice_item_id | package_id | addon_1 | addon_2 | addon_3 | ...
----------------|------------|---------|---------|
1 | 6 | 2 | 5 | 3 |

然后是我的另一张 table :

              Table: addons

addon_id | addon_name | addon_desc |
----------|--------------|--------------------------|
1 | Dance Lights | Brighten up the party... |
2 | Fog Machine | Add some fog for an e... |

我不想在我的 invoice_items 表中占用存储插件名称的空间,我只想在 addon_1、addon_2 等列中包含 addon_id。

在查询 invoice_item 行时如何获取插件的名称?

现在我只是将其编程到页面中,如果 addon_id == 1,则回显“Dance Lights”等,但我想在查询中执行此操作。这是我当前的查询:

                  $invoice_items_SQL = "

SELECT invoice_items.*, packages.*
FROM `invoice_items`

INNER JOIN packages ON invoice_items.invoice_item_id = packages.package_id

WHERE `event_id` = \"$event_id\"

";

所以我能够对包执行此操作,但这只是因为每行只有一个 package_id,但最多有 9 个插件 :(

最佳答案

最直接的方法是join onto the table multiple times .不过这有点儿不合时宜,因为你会写几乎相同的东西 9 次。

另一种更好的方法是重组您的表 - 您需要另一个包含 2 个数据列的表:invoice_id 和 addon_id。然后,您需要一个 auto-inc 主列,或者将这两个现有列用作双主键。所以这是一个多对多联结表。

从那里您可以在没有 9 次重复连接的情况下进行查询,但是对于每个包,您会得到一行包含每个插件的行(因此,如果它有三个插件,它将在结果中出现三次)。然后从那里您可以使用 GROUP_CONCAT 将插件的名称连接到一个字段中,这样您每张发票只能得到一行。

关于php - 用外键的结果替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com