Php MYSQL SELECT Group By语句

Php MYSQL SELECT Group By语句,php,mysql,select,Php,Mysql,Select,产品表: ProductID | Manufacturer | Part No | Name ----------------------------------------------------------------- 770593 | GBC | EB100000 | GBC (30 inch) ID Neck Chain - 1 x Pack of 100 Neck Chains 775308 | Elba | 1000

产品表:

ProductID | Manufacturer  | Part No     | Name
-----------------------------------------------------------------
770593    | GBC           | EB100000    | GBC (30 inch) ID Neck Chain - 1 x Pack of 100 Neck Chains
775308    | Elba          | 100080883   | Elba Vision (A5) Ring Binder
801982    | Elba          | 100080883   | Elba Vision (A5) Ring Binder
匹配的SKU表:

SupplierSKUID | ProductID
--------------|-------------------
Sku1          | 770593 
Sku2          | 770593 
Sku3          | 775308
Sku4          | 775308
Sku5          | 801982
结果:

SupplierSKUID | ProductID
--------------|-------------------
Sku1          | Sku2 
Sku2          | Sku1 
Sku3          | Sku4
Sku3          | Sku5
Sku4          | Sku3
Sku4          | Sku5
Sku5          | Sku3
Sku5          | Sku4
从上面的示例中,您可以看到Sku1和Sku2是相同的。Sku3、Sku4和Sku5也相同。Sku5与Sku3和Sku4相同,因为它在产品表中与ProductID 775308具有相同的名称、制造商和零件号,即使ProductID不同

我需要在匹配的SKU表中使用ProductID和products表中的Name对相似的SKU进行分组。

您可以这样做:

SELECT
  Name,
  GROUP_CONCAT(ProductId) AS LinkedProducts,
  GROUP_CONCAT(SupplierSKUID) AS LinkedSKUS
FROM
(
    SELECT
      s.ProductId,
      p.Name,
      s.SupplierSKUID
    FROM Products AS p
    INNER JOIN SKus AS s ON p.ProductID = s.ProductID 
    UNION
    SELECT
      s.ProductId,
      p1.Name AS Name1,
      s.SupplierSKUID
    FROM Products AS p1
    INNER JOIN Products AS p2  ON p1.Name = p2.Name 
                              AND p1.ProductID <> p2.ProductID 
    INNER JOIN SKus AS s ON p1.ProductID = s.ProductID 
) AS t
GROUP BY Name;

第一个联合查询将从products表和SKU表中提供匹配的products ID。第二个联合查询将在同一个表中提供匹配的产品名称,同时将它们与SKU表进行匹配。

那么,您发布的示例数据的预期结果是什么?@MahmoudGamal我不确定,但我需要创建另一个表来保存类似SKU的数据。例如,如果Sku1和Sku2相同,我需要在表中保存Sku1和Sku2相同的数据,Sku2和Sku1相同。我不确定这样做的最佳方式是什么,我真的非常感谢您的帮助。请您添加一个表,其中包含您提供的示例数据查询的精确所需输出?@Anders我已经添加了,现在这正是我认为我需要的,但如果您有更好的解决方案,那么它将真正帮助m。
|                                                      Name |       LinkedProducts |     LinkedSKUS |
|-----------------------------------------------------------|----------------------|----------------|
|                              Elba Vision (A5) Ring Binder | 801982,775308,775308 | Sku5,Sku4,Sku3 |
| GBC (30 inch) ID Neck Chain - 1 x Pack of 100 Neck Chains |        770593,770593 |      Sku1,Sku2 |