php 中单独列表中的匹配值

matching values on separate lists in php

对不起,如果这有点冗长,但这里有一些背景知识。

我正在将一些产品从一个购物车迁移到另一个。原始购物车非常旧,导出文件仅提供不同产品选项的选项 ID。例如。如果产品有红色、黄色和蓝色,它可能会给我选项 ID 1,2 和 3。

我已经设法获得一个单独的列表,显示所有可用的选项 ID 及其引用的选项。

因此,清单 A 向我展示了每个产品及其可用的选项 ID,如下所示:

List A

在这个例子中 product_id 1 可以是一件 T 恤,option_id 11 可以是 "colour" 而各种 option_value_ids 可以是红色、蓝色、黄色等

列表 B 向我展示了每个 option_value_id 的实际含义,如下所示:

List B

基本上我想写一个 PHP 脚本来比较两个列表,然后为每个唯一的产品 ID,然后为每个唯一的选项 ID,输出以下格式的一行文本:

product_id;option_id;以逗号分隔的选项值列表,例如

1;11;红、蓝、绿、黄...

我是 PHP 的新手,我首先将一个网络表单放在一起,这样我就可以粘贴电子表格中的数据,但我想我找错了树。然后我想也许可以将它们作为数据库中的 2 个 MySQL 表进行比较?

有人能给我指出正确的方向吗?

SELECT a.product_id, a.option_id, GROUP_CONCAT(DISTINCT b.option_name SEPARATOR ', ') as option_names 
FROM listA a 
LEFT JOIN listB b ON a.option_value_id = b.option_id
GROUP BY a.product_id, a.option_id;

应该可行 - 我是凭记忆写的 :) 如果不行 - 请尝试调整它。 您可以将其导出为 CSV。