如何在Wildcard中比较同一表中的2条记录?

时间:2013-08-16 20:52:50

标签: mysql magento compare records

我需要比较同一个mysql magento表中的记录。有没有办法比较同一个表中的2条记录,通过比较url_key和网址?我在下面发布了与我正在寻找的相关的信息。

我希望这也能帮助那些在Magento数据库上工作的人,因为我已经发布了我之前的2个查询,我们如何比较2个mysql表,以确保为magento中的类别创建记录。我发现如果url-keys和url不匹配,Magento将无法运行平面文件重建索引。我运行了一些检查以确保我的url在我的catalog_category_entity_varchar表和core_url_rewrite表中都是正确的。我最初跑了:

SELECT * 来自catalog_category_entity_varchar c2t 什么地方没有(     选择 *     来自core_url_rewrite c     WHERE c.category_id = c2t.entity_id )

确保我们的所有类别都输入core_url重写。然后我运行另一个查询以确保两个表中的所有url都匹配:

SELECT * 来自core_url_rewrite c 什么地方没有(     选择 *     来自catalog_category_entity_varchar c2t     在哪里c2t。entity_id = c。category_id     AND c2t。value = c。request_path

现在我想再运行一次查询以确保catalog_category_entity_varchar上的url对于它的相应url键也是正确的,但我完全坚持它并且不知道如何编写语句。

基本上,catalog_category_entity_varchar表如下所示:

catalog_category_entity_varchar:

记录1:
value_id:68
entity_type_id:3
attribute_id:43
STORE_ID:0
ENTITY_ID:10
值:店铺由

记录2:
value_id:73
entity_type_id:3
attribute_id:57
STORE_ID:0
ENTITY_ID:10
值:店铺by.html

两个记录的entity_id都是10。 url_key的属性ID为43,url ID为57.我想这些是我需要用来识别我正在比较的内容。

所以基本上我需要运行一个匹配实体id的查询,然后将url-key与url itslef进行比较,以确保它包含url键。它必须剥离.html以及url代码的任何其他部分,因为比第一级更深的记录看起来像catalog / shirts / shop-by.html。

记录3:
value_id:637
entity_type_id:3
attribute_id:57
STORE_ID:0
ENTITY_ID:88
值:目录/衬衫/店铺by.html

此外,还会有包含此URL-Key的记录,但我假设由于查询将基于它的主键(entity_id),我们不必担心这一点。

如果我没有以正确的格式写这个,我道歉,因为我还是这个论坛的新手。我提前感谢你的帮助。如果有任何不清楚或需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

检查这个查询,它有点难看,但它尽我所能。

SELECT `t1`.*, `t2`.`value` AS `url_path`
FROM `catalog_category_entity_varchar` AS `t1`
LEFT JOIN (
    SELECT `catalog_category_entity_varchar`.`value`,
        `catalog_category_entity_varchar`.`entity_id`,
        `catalog_category_entity_varchar`.`attribute_id`
    FROM `catalog_category_entity_varchar`
) AS `t2`
ON `t1`.`entity_id`=`t2`.`entity_id`
WHERE `t1`.`attribute_id` = 43
AND `t2`.`attribute_id` = 57
AND `t1`.`value` != `t2`.`value`
相关问题