【问题标题】:How to match SQL results from two lists and insert a new row for each match found?如何匹配两个列表中的 SQL 结果并为找到的每个匹配项插入一个新行?
【发布时间】:2017-12-12 18:24:50
【问题描述】:

对于那些熟悉 Magento 的人,我正在尝试编写一个查询以在 catalog_product_link 表中创建新的追加销售条目,但具有一些独特的条件。我对 MySQL(或任何 SQL)的了解充其量只是基础知识。

我在一个表中有两种类型的产品,我可以通过连接其他几个表来唯一标识它们。我可以像这样获得两种类型的产品结果的唯一列表:

SELECT cpev.entity_id AS product_id, cpev.value AS name
FROM catalog_product_entity_varchar AS cpev

INNER JOIN catalog_product_entity AS cpe
ON cpe.entity_id = cpev.entity_id

INNER JOIN eav_attribute AS ea
ON ea.attribute_id = cpev.attribute_id

INNER JOIN catalog_category_product AS cat
ON cat.product_id = cpev.entity_id

WHERE cat.category_id IN ( 41 )
AND ea.attribute_code = 'name'

GROUP BY product_id
ORDER BY product_id;

...这两个结果列表基于更改 WHERE cat.category_id IN ( 41 )

我试图做的是根据名称将第一个结果列表中的一行与第二个列表中的一个或多个行匹配。第一个列表中的全名将匹配第二个列表中名称的第一部分加上一些文本;例如:

  • list1,名称:Afinia L801
  • list2,名称:Afinia L801现场维护 合同

对于每个匹配,我需要在不同的表中插入一个新行,如下所示:

INSERT INTO catalog_product_link (product_id, linked_product_id, link_type_id)
SELECT @idFromList1 AS product_id, @idFromList2 as linked_product_id, 4 as link_type_id
...

我不确定这是否可以仅使用 SQL 来完成,或者如果这是我需要编写(例如)一个 PHP 脚本从数据库中提取两个列表的情况,将它们匹配起来,然后插入结果。但我仍在学习 SQL,因此我试图更好地掌握仅使用 MySQL 查询可以做什么。

【问题讨论】:

  • 哪一栏有名字?您要查找的其他类别编号是什么?

标签: php mysql magento magento-1.9


【解决方案1】:

您可以从同一张表中选择两次。

SELECT cpev.entity_id AS product_id, cpev.value AS name
FROM catalog_product_entity_varchar AS cpev
INNER JOIN catalog_product_entity AS cpe
ON cpe.entity_id = cpev.entity_id
INNER JOIN eav_attribute AS ea
ON ea.attribute_id = cpev.attribute_id
INNER JOIN catalog_category_product AS cat
ON cat.product_id = cpev.entity_id
INNER JOIN catalog_category_product AS cat2
ON cat2.product_id = cpev.entity_id
WHERE cat.category_id IN ( 41 )
AND cat2.category_id IN ( 42 )
AND ea.attribute_code = 'name'
GROUP BY product_id
ORDER BY product_id;

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2013-04-18
    • 2020-10-31
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多