【发布时间】:2023-04-08 06:49:02
【问题描述】:
我有两个表通过列“product_code”连接。
- 产品
- product_retailer_map
我的 SQL 查询:SELECT products.*, COUNT(product_retailer_map.product_code) FROM products LEFT JOIN product_retailer_map ON product_retailer_map.product_code = products.product_code GROUP BY products.product_code
每当我添加新零售商并执行增量导入时,solr 都会正确更新文档。 每当我添加新产品并执行增量导入时,solr 都会正确更新文档。
但每当我删除零售商并执行增量导入时,solr 不更新文档。 此外,每当我删除产品并执行增量导入时,solr 不更新文档。
我还没有配置 deletedPkQuery,因为我对如何处理 2 个单独的删除感到困惑。
编辑
< entity name="products"
query="SELECT p.*, COUNT(map.product_code) AS cnt, SUM(CASE WHEN map.retailer_availability > 0 THEN 1 ELSE 0 END) AS available_cnt FROM products AS p LEFT JOIN product_retailer_map AS map ON map.product_code = p.product_code GROUP BY p.product_code ORDER BY available_cnt DESC"
deltaImportQuery="SELECT p.*, COUNT(map.product_code) AS cnt, SUM(CASE WHEN map.retailer_availability > 0 THEN 1 ELSE 0 END) AS available_cnt FROM products AS p LEFT JOIN product_retailer_map AS map ON map.product_code = p.product_code WHERE p.product_id = '${dataimporter.delta.product_id}' GROUP BY p.product_code ORDER BY available_cnt DESC"
deltaQuery="SELECT `product_id` FROM `products` WHERE ( product_id IN (SELECT product_id FROM products WHERE product_code IN (SELECT DISTINCT product_code FROM product_retailer_map WHERE updated_at > '${dataimporter.last_index_time}')) ) OR (updated_at > '${dataimporter.last_index_time}')"
>
<field column="product_id" name="product_id"/>
<field column="product_code" name="product_code"/>
<field column="product_name" name="product_name"/>
<field column="cnt" name="cnt"/>
<field column="available_cnt" name="available_cnt"/>
< / entity >
如果我在这里做错了,请提出建议。
另外,我认为如果我使用 2 个实体,那么我可以编写 2 个删除查询,并且问题可能会得到正确解决。
你觉得呢??
【问题讨论】:
-
你能发布你的数据配置吗?这是您拥有所有查询和实体的 XML 部分...
-
发布了我的数据配置作为答案,因为它超过 660 个字符。
-
我已将您的编辑从答案移至您的问题,您的问题下方有一个编辑按钮,您应该使用该按钮,而不是回答 :)
-
感谢 @cheffe 将我的帖子移动到适当的位置。